models.ProfessionFilter: add a new field - QualificationID

This commit is contained in:
Dawid Wysokiński 2021-03-13 08:58:23 +01:00
parent d02d32ec5a
commit 8978aed00d
2 changed files with 17 additions and 1 deletions

View File

@ -95,6 +95,8 @@ type ProfessionFilter struct {
DescriptionMATCH string `gqlgen:"descriptionMATCH" json:"descriptionMATCH" xml:"descriptionMATCH"`
DescriptionIEQ string `json:"descriptionIEQ" xml:"descriptionIEQ" gqlgen:"descriptionIEQ"`
QualificationID []int `gqlgen:"qualificationID" xml:"qualificationID" json:"qualificationID"`
CreatedAt time.Time `gqlgen:"createdAt" json:"createdAt" xml:"createdAt"`
CreatedAtGT time.Time `gqlgen:"createdAtGT" json:"createdAtGT" xml:"createdAtGT"`
CreatedAtGTE time.Time `json:"createdAtGTE" xml:"createdAtGTE" gqlgen:"createdAtGTE"`
@ -141,6 +143,21 @@ func (f *ProfessionFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Quer
q = q.Where(sqlutils.BuildConditionIEQ(sqlutils.AddAliasToColumnName("description", alias)), f.DescriptionIEQ)
}
if !isZero(f.QualificationID) {
sliceLength := len(f.QualificationID)
subquery := q.
New().
Model(&QualificationToProfession{}).
ColumnExpr(sqlutils.BuildCountColumnExpr("qualification_id", "count")).
Column("profession_id").
Where(sqlutils.BuildConditionArray("qualification_id"), pg.Array(f.QualificationID)).
Group("profession_id")
q = q.
Join(`INNER JOIN (?) AS qualification_to_professions ON qualification_to_professions.profession_id = profession.id`, subquery).
Where(sqlutils.BuildConditionGTE("count"), sliceLength)
}
if !isZero(f.CreatedAt) {
q = q.Where(sqlutils.BuildConditionEquals(sqlutils.AddAliasToColumnName("created_at", alias)), f.CreatedAt)
}

View File

@ -252,7 +252,6 @@ func (f *QualificationFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Q
}
if !isZero(f.ProfessionID) {
// q = q.Where(sqlutils.BuildConditionArray(sqlutils.AddAliasToColumnName("formula", alias)), pg.Array(f.Formula))
sliceLength := len(f.ProfessionID)
subquery := q.
New().