-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathparser.go
More file actions
29 lines (27 loc) · 790 Bytes
/
parser.go
File metadata and controls
29 lines (27 loc) · 790 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package sqlparser
import (
"fmt"
"github.com/viant/parsly"
del "github.com/viant/sqlparser/delete"
"github.com/viant/sqlparser/insert"
"github.com/viant/sqlparser/query"
"github.com/viant/sqlparser/schema"
"github.com/viant/sqlparser/update"
)
// Parse parses SQL into supplied destination
func Parse(cursor *parsly.Cursor, dest interface{}) error {
switch destination := dest.(type) {
case *query.Select:
return parseQuery(cursor, destination)
case *insert.Statement:
return parseInsert(cursor, destination)
case *update.Statement:
return parseUpdate(cursor, destination)
case *del.Statement:
return parseDelete(cursor, destination)
case *schema.Register:
return parseRegisterType(cursor, destination)
default:
return fmt.Errorf("not supported: %T", dest)
}
}