(Feat): Initial Commit
This commit is contained in:
25
internal/util/db/where_in.go
Normal file
25
internal/util/db/where_in.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aarondl/sqlboiler/v4/queries/qm"
|
||||
"github.com/lib/pq"
|
||||
)
|
||||
|
||||
// WhereIn was a copy from sqlboiler's WHERE IN query helpers since these don't get generated for nullable columns.
|
||||
// Since sqlboilers IN query helpers will set a param for earch element in the slice we reccomment using this packages IN.
|
||||
func WhereIn(tableName string, columnName string, slice []string) qm.QueryMod {
|
||||
return IN(fmt.Sprintf("%s.%s", tableName, columnName), slice)
|
||||
}
|
||||
|
||||
// IN is a replacement for sqlboilers IN query mod. sqlboilers IN will set a param for
|
||||
// each element in the slice and we do not recommend to use this, because it will run into driver and
|
||||
// database limits. While the sqlboiler IN fails at about ~10000 params this was tested with over 1000000.
|
||||
func IN(path string, slice []string) qm.QueryMod {
|
||||
return qm.Where(fmt.Sprintf("%s = any(?)", path), pq.StringArray(slice))
|
||||
}
|
||||
|
||||
func NIN(path string, slice []string) qm.QueryMod {
|
||||
return qm.Where(fmt.Sprintf("%s <> all(?)", path), pq.StringArray(slice))
|
||||
}
|
||||
Reference in New Issue
Block a user