|
|
@ -59,7 +59,7 @@ func (d *DB) ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) err
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if !slices.Contains([]string{"create_time", "update_time", "visibility", "content"}, identifier) {
|
|
|
|
if !slices.Contains([]string{"creator_id", "create_time", "update_time", "visibility", "content"}, identifier) {
|
|
|
|
return errors.Errorf("invalid identifier for %s", v.CallExpr.Function)
|
|
|
|
return errors.Errorf("invalid identifier for %s", v.CallExpr.Function)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
value, err := filter.GetConstValue(v.CallExpr.Args[1])
|
|
|
|
value, err := filter.GetConstValue(v.CallExpr.Args[1])
|
|
|
@ -121,6 +121,23 @@ func (d *DB) ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) err
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ctx.Args = append(ctx.Args, valueStr)
|
|
|
|
ctx.Args = append(ctx.Args, valueStr)
|
|
|
|
|
|
|
|
} else if identifier == "creator_id" {
|
|
|
|
|
|
|
|
if operator != "=" && operator != "!=" {
|
|
|
|
|
|
|
|
return errors.Errorf("invalid operator for %s", v.CallExpr.Function)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
valueInt, ok := value.(int64)
|
|
|
|
|
|
|
|
if !ok {
|
|
|
|
|
|
|
|
return errors.New("invalid int value")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var factor string
|
|
|
|
|
|
|
|
if identifier == "creator_id" {
|
|
|
|
|
|
|
|
factor = "`memo`.`creator_id`"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if _, err := ctx.Buffer.WriteString(fmt.Sprintf("%s %s ?", factor, operator)); err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.Args = append(ctx.Args, valueInt)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case "@in":
|
|
|
|
case "@in":
|
|
|
|
if len(v.CallExpr.Args) != 2 {
|
|
|
|
if len(v.CallExpr.Args) != 2 {
|
|
|
|