forked from ebhomengo/niki
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:
commit
5f7ce41418
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue