diff options
Diffstat (limited to 'pkg/query/query.go')
| -rw-r--r-- | pkg/query/query.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pkg/query/query.go b/pkg/query/query.go new file mode 100644 index 0000000..5ddc724 --- /dev/null +++ b/pkg/query/query.go @@ -0,0 +1,34 @@ +package query + +import "strings" + +func Generate(ir *QueryIR) (any, error) { + // TODO: implement + return nil, nil +} + +func Compile(query string) (any, error) { + // TODO: logging + clause, err := Parse(Lex(query)) + if err != nil { + return nil, err + } + + ir, err := NewIR(*clause) + if err != nil { + return nil, err + } + + ir, err = Optimize(ir) + if err != nil { + return nil, err + } + + return Generate(ir) +} + +func writeIndent(b *strings.Builder, level int) { + for range level { + b.WriteByte('\t') + } +} |
