fix: tests

pull/4908/head
johnnyjoy 3 months ago
parent b55904a428
commit e24f92b719

@ -184,7 +184,7 @@ func (d *DB) convertWithTemplates(ctx *filter.ConvertContext, expr *exprv1.Expr)
if !ok { if !ok {
return errors.Errorf("invalid boolean value for %s", identifier) return errors.Errorf("invalid boolean value for %s", identifier)
} }
// Map identifier to JSON path // Map identifier to JSON path
var jsonPath string var jsonPath string
switch identifier { switch identifier {
@ -195,7 +195,7 @@ func (d *DB) convertWithTemplates(ctx *filter.ConvertContext, expr *exprv1.Expr)
case "has_incomplete_tasks": case "has_incomplete_tasks":
jsonPath = "$.property.hasIncompleteTasks" jsonPath = "$.property.hasIncompleteTasks"
} }
// Use JSON_EXTRACT for boolean comparison like has_task_list // Use JSON_EXTRACT for boolean comparison like has_task_list
var sqlTemplate string var sqlTemplate string
if operator == "=" { if operator == "=" {
@ -323,7 +323,7 @@ func (d *DB) convertWithTemplates(ctx *filter.ConvertContext, expr *exprv1.Expr)
return err return err
} }
} else if identifier == "has_code" { } else if identifier == "has_code" {
// Handle has_code as a standalone boolean identifier // Handle has_code as a standalone boolean identifier
if _, err := ctx.Buffer.WriteString("JSON_EXTRACT(`memo`.`payload`, '$.property.hasCode') = CAST('true' AS JSON)"); err != nil { if _, err := ctx.Buffer.WriteString("JSON_EXTRACT(`memo`.`payload`, '$.property.hasCode') = CAST('true' AS JSON)"); err != nil {
return err return err
} }

@ -192,7 +192,7 @@ func (d *DB) convertWithParameterIndex(ctx *filter.ConvertContext, expr *exprv1.
if !ok { if !ok {
return paramIndex, errors.Errorf("invalid boolean value for %s", identifier) return paramIndex, errors.Errorf("invalid boolean value for %s", identifier)
} }
// Map identifier to JSON path // Map identifier to JSON path
var jsonPath string var jsonPath string
switch identifier { switch identifier {
@ -203,22 +203,14 @@ func (d *DB) convertWithParameterIndex(ctx *filter.ConvertContext, expr *exprv1.
case "has_incomplete_tasks": case "has_incomplete_tasks":
jsonPath = "$.property.hasIncompleteTasks" jsonPath = "$.property.hasIncompleteTasks"
} }
// Use JSON path for boolean comparison with PostgreSQL parameter placeholder // Use JSON path for boolean comparison with PostgreSQL parameter placeholder
placeholder := filter.GetParameterPlaceholder(dbType, paramIndex) placeholder := filter.GetParameterPlaceholder(dbType, paramIndex)
var sqlTemplate string var sqlTemplate string
if operator == "=" { if operator == "=" {
if valueBool { sqlTemplate = fmt.Sprintf("(%s->'payload'->'property'->>'%s')::boolean = %s", filter.GetSQL("table_prefix", dbType), strings.TrimPrefix(jsonPath, "$.property."), placeholder)
sqlTemplate = fmt.Sprintf("(%s->'payload'->'property'->>'%s')::boolean = %s", filter.GetSQL("table_prefix", dbType), strings.TrimPrefix(jsonPath, "$.property."), placeholder)
} else {
sqlTemplate = fmt.Sprintf("(%s->'payload'->'property'->>'%s')::boolean = %s", filter.GetSQL("table_prefix", dbType), strings.TrimPrefix(jsonPath, "$.property."), placeholder)
}
} else { // operator == "!=" } else { // operator == "!="
if valueBool { sqlTemplate = fmt.Sprintf("(%s->'payload'->'property'->>'%s')::boolean != %s", filter.GetSQL("table_prefix", dbType), strings.TrimPrefix(jsonPath, "$.property."), placeholder)
sqlTemplate = fmt.Sprintf("(%s->'payload'->'property'->>'%s')::boolean != %s", filter.GetSQL("table_prefix", dbType), strings.TrimPrefix(jsonPath, "$.property."), placeholder)
} else {
sqlTemplate = fmt.Sprintf("(%s->'payload'->'property'->>'%s')::boolean != %s", filter.GetSQL("table_prefix", dbType), strings.TrimPrefix(jsonPath, "$.property."), placeholder)
}
} }
if _, err := ctx.Buffer.WriteString(sqlTemplate); err != nil { if _, err := ctx.Buffer.WriteString(sqlTemplate); err != nil {
return paramIndex, err return paramIndex, err
@ -347,7 +339,7 @@ func (d *DB) convertWithParameterIndex(ctx *filter.ConvertContext, expr *exprv1.
return paramIndex, err return paramIndex, err
} }
} else if identifier == "has_code" { } else if identifier == "has_code" {
// Handle has_code as a standalone boolean identifier // Handle has_code as a standalone boolean identifier
if _, err := ctx.Buffer.WriteString(fmt.Sprintf("(%s->'payload'->'property'->>'hasCode')::boolean = true", filter.GetSQL("table_prefix", dbType))); err != nil { if _, err := ctx.Buffer.WriteString(fmt.Sprintf("(%s->'payload'->'property'->>'hasCode')::boolean = true", filter.GetSQL("table_prefix", dbType))); err != nil {
return paramIndex, err return paramIndex, err
} }

@ -184,7 +184,7 @@ func (d *DB) convertWithTemplates(ctx *filter.ConvertContext, expr *exprv1.Expr)
if !ok { if !ok {
return errors.Errorf("invalid boolean value for %s", identifier) return errors.Errorf("invalid boolean value for %s", identifier)
} }
// Map identifier to JSON path // Map identifier to JSON path
var jsonPath string var jsonPath string
switch identifier { switch identifier {
@ -195,7 +195,7 @@ func (d *DB) convertWithTemplates(ctx *filter.ConvertContext, expr *exprv1.Expr)
case "has_incomplete_tasks": case "has_incomplete_tasks":
jsonPath = "$.property.hasIncompleteTasks" jsonPath = "$.property.hasIncompleteTasks"
} }
// Use JSON_EXTRACT for boolean comparison like has_task_list // Use JSON_EXTRACT for boolean comparison like has_task_list
var sqlTemplate string var sqlTemplate string
if operator == "=" { if operator == "=" {
@ -323,7 +323,7 @@ func (d *DB) convertWithTemplates(ctx *filter.ConvertContext, expr *exprv1.Expr)
return err return err
} }
} else if identifier == "has_code" { } else if identifier == "has_code" {
// Handle has_code as a standalone boolean identifier // Handle has_code as a standalone boolean identifier
if _, err := ctx.Buffer.WriteString("JSON_EXTRACT(`memo`.`payload`, '$.property.hasCode') = JSON('true')"); err != nil { if _, err := ctx.Buffer.WriteString("JSON_EXTRACT(`memo`.`payload`, '$.property.hasCode') = JSON('true')"); err != nil {
return err return err
} }

Loading…
Cancel
Save