@@ -163,133 +163,3 @@ func (c *Converter) columnName(column string) string {
163
163
}
164
164
return fmt .Sprintf (`%q->>'%s'` , c .nestedColumn , column )
165
165
}
166
-
167
- /*
168
- type Converter struct {
169
- nestedColumn string
170
- nestedExemptions []string
171
- }
172
-
173
- func NewConverter(options ...Option) *Converter {
174
- converter := &Converter{}
175
- for _, option := range options {
176
- option(converter)
177
- }
178
- return converter
179
- }
180
-
181
- func (c *Converter) Convert(filter []byte) (conditions string, values []any, err error) {
182
- expr, err := c.parse(filter)
183
- if err != nil {
184
- return "", nil, fmt.Errorf("failed to parse filter: %w", err)
185
- }
186
- conditions, values, err = expr.ToPostgresWhereClause()
187
- if err != nil {
188
- return "", nil, fmt.Errorf("failed to convert expression to where clause: %w", err)
189
- }
190
- return
191
- }
192
-
193
- type expression interface {
194
- ToPostgresWhereClause() (string, []any, error)
195
- }
196
-
197
- type compoundExpression struct {
198
- expressions []expression
199
- operator string
200
- }
201
-
202
- func (e compoundExpression) ToPostgresWhereClause() (string, []any, error) {
203
- values := []any{}
204
- conditions := []string{}
205
- for _, expr := range e.expressions {
206
- condition, value, err := expr.ToPostgresWhereClause()
207
- if err != nil {
208
- return "", nil, fmt.Errorf("failed to convert expression to where clause: %w", err)
209
- }
210
- conditions = append(conditions, condition)
211
- values = append(values, value...)
212
- }
213
- return "(" + strings.Join(conditions, " AND ") + ")", values, nil
214
- }
215
-
216
- type scalarExpression struct {
217
- column string
218
- operator string
219
- value string
220
- }
221
-
222
- func (e scalarExpression) ToPostgresWhereClause() (string, []any, error) {
223
- return fmt.Sprintf(`"%s" %s ?`, e.column, e.operator), []any{e.value}, nil
224
- }
225
-
226
- func (c *Converter) parse(input []byte) (expression, error) {
227
- raw := map[string]any{}
228
- err := json.Unmarshal(input, &raw)
229
- if err != nil {
230
- return nil, fmt.Errorf("failed to unmarshal input: %w", err)
231
- }
232
- root := compoundExpression{
233
- expressions: []expression{},
234
- operator: "AND",
235
- }
236
- for key, value := range raw {
237
- expr := convertToExpression(key, value, key)
238
- if expr == nil {
239
- return nil, fmt.Errorf("failed to convert expression")
240
- }
241
- root.expressions = append(root.expressions, expr)
242
- }
243
-
244
- if root.operator != "AND" {
245
- return nil, fmt.Errorf("root operator must be AND")
246
- }
247
- return root, nil
248
- }
249
-
250
- func convertToExpression(key string, value any, currentColumn string) expression {
251
- switch value := value.(type) {
252
- case int:
253
- case int64:
254
- case float64:
255
- case string:
256
- switch key {
257
- case "$gt":
258
- return &scalarExpression{
259
- column: currentColumn,
260
- operator: ">",
261
- value: value,
262
- }
263
- case "$gte":
264
- return &scalarExpression{
265
- column: currentColumn,
266
- operator: ">=",
267
- value: value,
268
- }
269
- case "$lt":
270
- return &scalarExpression{
271
- column: currentColumn,
272
- operator: "<",
273
- value: value,
274
- }
275
- case "$lte":
276
- return &scalarExpression{
277
- column: currentColumn,
278
- operator: "<=",
279
- value: value,
280
- }
281
- case "$eq":
282
- fallthrough
283
- default:
284
- return &scalarExpression{
285
- column: currentColumn,
286
- operator: "=",
287
- value: value,
288
- }
289
- }
290
- case map[string]any:
291
- return convertToExpression(key, value, key)
292
- }
293
- return nil
294
- }
295
- */
0 commit comments