Merge pull request 'fix: date, date-time filter' (#187) from hotfix/Fix-refer-dates-format into develop

Reviewed-on: ebhomengo/niki#187
This commit is contained in:
hossein 2024-09-25 05:31:39 +00:00
commit 5f7ce41418
1 changed files with 17 additions and 3 deletions

View File

@ -1,11 +1,25 @@
package mysqlquerybuilder package mysqlquerybuilder
import "fmt" import (
"fmt"
"regexp"
)
var datePattern = regexp.MustCompile(`^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?$`)
func isValidDateOrDateTime(value string) bool {
return datePattern.MatchString(value)
}
func BuildFilterQuery(filter map[string]interface{}) (filterQuery string, args []any) { func BuildFilterQuery(filter map[string]interface{}) (filterQuery string, args []any) {
for key, value := range filter { for key, value := range filter {
filterQuery += fmt.Sprintf("AND %s = ? ", key) if strVal, ok := value.(string); ok && isValidDateOrDateTime(strVal) {
args = append(args, value) filterQuery += fmt.Sprintf("AND DATE(%s) = ? ", key)
args = append(args, strVal)
} else {
filterQuery += fmt.Sprintf("AND %s = ? ", key)
args = append(args, value)
}
} }
return filterQuery, args return filterQuery, args