From 4c06d6b53cf44a215455785a29a07199ab4cf80a Mon Sep 17 00:00:00 2001 From: Helga Date: Tue, 21 Apr 2020 00:31:24 +0300 Subject: [PATCH] [dev] extra string operators --- sql.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/sql.go b/sql.go index 5f2d4f8..933d864 100644 --- a/sql.go +++ b/sql.go @@ -68,12 +68,23 @@ func GetSQL(data Filter, config *SQLConfig) (string, []interface{}, error) { case "lessOrEqual": return fmt.Sprintf("%s <= ?", data.Field), []interface{}{data.Condition.Value}, nil case "greaterOrEqual": - return fmt.Sprintf( "%s >= ?", data.Field), []interface{}{data.Condition.Value}, nil + return fmt.Sprintf("%s >= ?", data.Field), []interface{}{data.Condition.Value}, nil case "less": return fmt.Sprintf("%s < ?", data.Field), []interface{}{data.Condition.Value}, nil case "greater": return fmt.Sprintf("%s > ?", data.Field), []interface{}{data.Condition.Value}, nil - + case "beginsWith": + search := "concat(?, '%')" + return fmt.Sprintf("%s LIKE %s", data.Field, search), []interface{}{data.Condition.Value}, nil + case "notBeginsWith": + search := "concat(?, '%')" + return fmt.Sprintf("%s NOT LIKE %s", data.Field, search), []interface{}{data.Condition.Value}, nil + case "endsWith": + search := "concat('%', ?)" + return fmt.Sprintf("%s LIKE %s", data.Field, search), []interface{}{data.Condition.Value}, nil + case "notEndsWith": + search := "concat('%', ?)" + return fmt.Sprintf("%s NOT LIKE %s", data.Field, search), []interface{}{data.Condition.Value}, nil } if config != nil && config.Operations != nil {