From afffe0e101e09f6495f25327dfee1c728b23b9f2 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Mon, 16 Dec 2019 11:51:43 -0800 Subject: [PATCH] internal/dinosql: Error on missing queries If after parsing a package contains zero queries, error --- internal/dinosql/parser.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/dinosql/parser.go b/internal/dinosql/parser.go index 01a0fb9706..486ec8fa3b 100644 --- a/internal/dinosql/parser.go +++ b/internal/dinosql/parser.go @@ -219,6 +219,9 @@ func ParseQueries(c core.Catalog, settings GenerateSettings, pkg PackageSettings for _, stmt := range tree.Statements { // line, col := location(source, stmt) query, err := parseQuery(c, stmt, source) + if err == errUnsupportedStatementType { + continue + } if err != nil { merr.Add(filename, source, location(stmt), err) continue @@ -229,11 +232,12 @@ func ParseQueries(c core.Catalog, settings GenerateSettings, pkg PackageSettings } } } - + if len(q) == 0 { + return nil, fmt.Errorf("path %s contains no queries", pkg.Queries) + } if len(merr.Errs) > 0 { return nil, merr } - return &Result{Catalog: c, Queries: q, Settings: settings}, nil } @@ -365,6 +369,8 @@ func validateCmd(n nodes.Node, name, cmd string) error { return nil } +var errUnsupportedStatementType = errors.New("parseQuery: unsupported statement type") + func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) { if err := validateParamRef(stmt); err != nil { return nil, err @@ -382,7 +388,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } case nodes.UpdateStmt: default: - return nil, fmt.Errorf("parseQuery: unsupported statement type: %T", n) + return nil, errUnsupportedStatementType } rawSQL, err := pluckQuery(source, raw)