MCPcopy
hub / github.com/safing/portmaster / generateSQL

Method generateSQL

service/netquery/query_request.go:38–106  ·  view source on GitHub ↗
(ctx context.Context, schema *orm.TableSchema)

Source from the content-addressed store, hash-verified

36)
37
38func (req *QueryRequestPayload) generateSQL(ctx context.Context, schema *orm.TableSchema) (string, map[string]interface{}, error) {
39 if err := req.prepareSelectedFields(ctx, schema); err != nil {
40 return "", nil, fmt.Errorf("perparing selected fields: %w", err)
41 }
42
43 // build the SQL where clause from the payload query
44 whereClause, paramMap, err := req.Query.toSQLWhereClause(
45 ctx,
46 "",
47 schema,
48 orm.DefaultEncodeConfig,
49 )
50 if err != nil {
51 return "", nil, fmt.Errorf("generating where clause: %w", err)
52 }
53
54 req.mergeParams(paramMap)
55
56 if req.TextSearch != nil {
57 textClause, textParams, err := req.TextSearch.toSQLConditionClause(ctx, schema, "", orm.DefaultEncodeConfig)
58 if err != nil {
59 return "", nil, fmt.Errorf("generating text-search clause: %w", err)
60 }
61
62 if textClause != "" {
63 if whereClause != "" {
64 whereClause += " AND "
65 }
66
67 whereClause += textClause
68
69 req.mergeParams(textParams)
70 }
71 }
72
73 groupByClause, err := req.generateGroupByClause(schema)
74 if err != nil {
75 return "", nil, fmt.Errorf("generating group-by clause: %w", err)
76 }
77
78 orderByClause, err := req.generateOrderByClause(schema)
79 if err != nil {
80 return "", nil, fmt.Errorf("generating order-by clause: %w", err)
81 }
82
83 selectClause := req.generateSelectClause()
84
85 if whereClause != "" {
86 whereClause = "WHERE " + whereClause
87 }
88
89 // if no database is specified we default to LiveDatabase only.
90 if len(req.Databases) == 0 {
91 req.Databases = []DatabaseName{LiveDatabase}
92 }
93
94 sources := make([]string, len(req.Databases))
95 for idx, db := range req.Databases {

Callers 2

ServeHTTPMethod · 0.45
ServeHTTPMethod · 0.45

Calls 9

prepareSelectedFieldsMethod · 0.95
mergeParamsMethod · 0.95
generateGroupByClauseMethod · 0.95
generateOrderByClauseMethod · 0.95
generateSelectClauseMethod · 0.95
ErrorfMethod · 0.80
toSQLWhereClauseMethod · 0.80
toSQLConditionClauseMethod · 0.45

Tested by

no test coverage detected