diff --git a/models/group.go b/models/group.go index 10b0345..3b2ca92 100644 --- a/models/group.go +++ b/models/group.go @@ -1,6 +1,7 @@ package models import ( + "github.com/Kichiyaki/gopgutil/v10" "github.com/go-pg/pg/v10" "github.com/go-pg/pg/v10/orm" ) @@ -22,20 +23,16 @@ type GroupFilter struct { DefaultFilter } -func (f *GroupFilter) ApplyWithPrefix(prefix string) func(q *orm.Query) (*orm.Query, error) { - return func(q *orm.Query) (*orm.Query, error) { - if len(f.ID) > 0 { - column := addPrefixToColumnName("id", prefix) - q = q.Where(column+" = ANY(?)", pg.Array(f.ID)) - } - if len(f.ServerID) > 0 { - column := addPrefixToColumnName("server_id", prefix) - q = q.Where(column+" = ANY(?)", pg.Array(f.ServerID)) - } - return f.DefaultFilter.Apply(q) +func (f *GroupFilter) ApplyWithAlias(q *orm.Query, prefix string) (*orm.Query, error) { + if len(f.ID) > 0 { + q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", prefix), pg.Array(f.ID)) } + if len(f.ServerID) > 0 { + q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("server_id", prefix), pg.Array(f.ServerID)) + } + return f.DefaultFilter.Apply(q) } func (f *GroupFilter) Apply(q *orm.Query) (*orm.Query, error) { - return f.ApplyWithPrefix("group")(q) + return f.ApplyWithAlias(q, "group") } diff --git a/models/observation.go b/models/observation.go index 0f5575d..f959c13 100644 --- a/models/observation.go +++ b/models/observation.go @@ -39,7 +39,7 @@ type ObservationFilter struct { DefaultFilter } -func (f *ObservationFilter) ApplyWithPrefix(q *orm.Query, alias string) (*orm.Query, error) { +func (f *ObservationFilter) ApplyWithAlias(q *orm.Query, alias string) (*orm.Query, error) { if len(f.ID) > 0 { q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.ID)) } @@ -53,5 +53,5 @@ func (f *ObservationFilter) ApplyWithPrefix(q *orm.Query, alias string) (*orm.Qu } func (f *ObservationFilter) Apply(q *orm.Query) (*orm.Query, error) { - return f.ApplyWithPrefix(q, "observation") + return f.ApplyWithAlias(q, "observation") } diff --git a/models/server.go b/models/server.go index b953180..b0014d8 100644 --- a/models/server.go +++ b/models/server.go @@ -20,7 +20,7 @@ type ServerFilter struct { DefaultFilter } -func (f *ServerFilter) ApplyWithPrefix(q *orm.Query, alias string) (*orm.Query, error) { +func (f *ServerFilter) ApplyWithAlias(q *orm.Query, alias string) (*orm.Query, error) { if len(f.ID) > 0 { q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.ID)) } @@ -28,5 +28,5 @@ func (f *ServerFilter) ApplyWithPrefix(q *orm.Query, alias string) (*orm.Query, } func (f *ServerFilter) Apply(q *orm.Query) (*orm.Query, error) { - return f.ApplyWithPrefix(q, "server") + return f.ApplyWithAlias(q, "server") }