Skip to content

Commit

Permalink
Merge pull request #8 from wings-software/anshul/canoniclTemplateGene…
Browse files Browse the repository at this point in the history
…ration-2

Added support for projection fields in canonical form
  • Loading branch information
anshul-harness authored Jun 8, 2021
2 parents a738825 + 9125ea5 commit 87fb7c6
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 6 deletions.
21 changes: 19 additions & 2 deletions src/compiler/compiler.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ const queryCanonicalFormsTemplate = `

const canonicalFormTemplate=`
.add("collection(%s)"
+ "\n .filter(%s)")
+ "\n .filter(%s)"%s)
`

const generatedFileTemplate = `package io.harness.beans;
Expand Down Expand Up @@ -206,7 +206,24 @@ func (compiler *Compiler) Generate(query *dom.Query) string {
canonicalExpression.WriteString(currFieldName + " in list<+>")
}
}
var queryCanonicalForms = fmt.Sprintf(queryCanonicalFormsTemplate, fmt.Sprintf(canonicalFormTemplate, collectionName, canonicalExpression.String()))



var canonicalProjections strings.Builder
if query.ProjectFields != nil && len(query.ProjectFields) !=0 {
for _, field := range query.ProjectFields {
if len(canonicalProjections.String()) != 0 {
canonicalProjections.WriteString(", ")
} else {
canonicalProjections.WriteString("\n + \"\\n .project(")
}
canonicalProjections.WriteString(field)
}
canonicalProjections.WriteString(")\"")
}


var queryCanonicalForms = fmt.Sprintf(queryCanonicalFormsTemplate, fmt.Sprintf(canonicalFormTemplate, collectionName, canonicalExpression.String(), canonicalProjections.String()))

return fmt.Sprintf(generatedFileTemplate, imports, collectionName, name, createMethod, interfaces.String(), queryImpl, queryCanonicalForms)
}
5 changes: 3 additions & 2 deletions src/compiler/compiler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@ public class DelegateTaskSelectQuery implements PersistentQuery {
public List<String> queryCanonicalForms() {
return ImmutableList.<String>builder()
.add("collection(DelegateTask)"
+ "\n .filter(orange in list<+>, worm = <+>, apple in list<+>, banana in list<+>)")
+ "\n .filter(orange in list<+>, worm = <+>, apple in list<+>, banana in list<+>)"
+ "\n .project(foo, bar)")
.build();
}
}
Expand All @@ -176,4 +177,4 @@ public class DelegateTaskSelectQuery implements PersistentQuery {

var result = compiler.Generate(&query)
assert.Equal(t, expected, result)
}
}
3 changes: 1 addition & 2 deletions src/dom/parser/lexer.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package parser

import (
"fmt"
"github.com/query-builder-generator/src/dom"
"text/scanner"
)
Expand Down Expand Up @@ -44,7 +43,7 @@ func (l *Lexer) Lex(lval *DomSymType) int {
}
}
lval.token = Token{token: tok, literal: lit}
fmt.Printf("Scanner: %+v, token: %+v, lit: %+v, tok: %+v \n", l.Scanner, token, lit, tok)
//fmt.Printf("Scanner: %+v, token: %+v, lit: %+v, tok: %+v \n", l.Scanner, token, lit, tok)
return tok
}
func (l *Lexer) Error(e string) {
Expand Down

0 comments on commit 87fb7c6

Please sign in to comment.