51
}
52
53
>
func (p *queryParser) Parse(query string) (*parsedQuery, error) {
query_parser.go
54
>
stmt, err := sqlparser.Parse(fmt.Sprintf(sqlquery.QueryTemplate, query))
55
>
if err != nil {
56
return nil, err
57
}
59
>
parsedQuery := &parsedQuery{}
60
>
if err := p.convertWhereExpr(whereExpr, parsedQuery); err != nil {
61
>
return nil, err
62
>
}
63
>
if parsedQuery.workflowID == nil && parsedQuery.workflowTypeName == nil {
64
return nil, errors.New("WorkflowId or WorkflowTypeName is required in query")
65
}
66
>
if parsedQuery.workflowID != nil && parsedQuery.workflowTypeName != nil {
query_parser.go
67
return nil, errors.New("only one of WorkflowId or WorkflowTypeName can be specified in a query")
68
}
69
>
if parsedQuery.closeTime != nil && parsedQuery.startTime != nil {
query_parser.go
70
return nil, errors.New("only one of StartTime or CloseTime can be specified in a query")
71
}
72
>
if (parsedQuery.closeTime != nil || parsedQuery.startTime != nil) && parsedQuery.searchPrecision == nil {
query_parser.go
73
return nil, errors.New("SearchPrecision is required when searching for a StartTime or CloseTime")
74
}
75
76
>
if parsedQuery.closeTime == nil && parsedQuery.startTime == nil && parsedQuery.searchPrecision != nil {
query_parser.go
77
return nil, errors.New("SearchPrecision requires a StartTime or CloseTime")
78
}
80
}
81
82
>
func (p *queryParser) convertWhereExpr(expr sqlparser.Expr, parsedQuery *parsedQuery) error {
query_parser.go
83
>
if expr == nil {
84
return errors.New("where expression is nil")
85
}
86
88
>
case *sqlparser.ComparisonExpr:
89
>
return p.convertComparisonExpr(expr, parsedQuery)
90
>
case *sqlparser.AndExpr:
91
>
return p.convertAndExpr(expr, parsedQuery)
92
case *sqlparser.ParenExpr:
93
return p.convertParenExpr(expr, parsedQuery)