This commit is contained in:
Dawid Wysokiński 2021-11-01 09:18:20 +01:00
parent 9d20460f16
commit 9186d45e2f
Signed by: Kichiyaki
GPG Key ID: EF14026D247EB867
9 changed files with 672 additions and 12 deletions

View File

@ -0,0 +1,21 @@
package postgres
type Answer string
const (
AnswerA Answer = "a"
AnswerB Answer = "b"
AnswerC Answer = "c"
AnswerD Answer = "d"
)
func (answer Answer) IsValid() bool {
switch answer {
case AnswerA,
AnswerB,
AnswerC,
AnswerD:
return true
}
return false
}

View File

@ -0,0 +1,9 @@
package postgres
import (
"reflect"
)
func isZero(v interface{}) bool {
return reflect.ValueOf(v).IsZero()
}

View File

@ -0,0 +1,125 @@
package postgres
import (
"context"
"github.com/Kichiyaki/gopgutil/v10"
"github.com/zdam-egzamin-zawodowy/backend/internal"
"time"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
"github.com/gosimple/slug"
)
var _ pg.BeforeInsertHook = (*Profession)(nil)
var _ pg.BeforeUpdateHook = (*Profession)(nil)
type Profession struct {
tableName struct{} `pg:"alias:profession"`
ID int
Slug string `pg:",unique"`
Name string `pg:",unique"`
Description string
CreatedAt time.Time `pg:"default:now()"`
}
func (p *Profession) BeforeInsert(ctx context.Context) (context.Context, error) {
p.CreatedAt = time.Now()
p.Slug = slug.Make(p.Name)
return ctx, nil
}
func (p *Profession) BeforeUpdate(ctx context.Context) (context.Context, error) {
if p.Name != "" {
p.Slug = slug.Make(p.Name)
}
return ctx, nil
}
func applyProfessionInputUpdates(input internal.ProfessionInput) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if input.Name != nil {
q = q.Set(gopgutil.BuildConditionEquals("name"), *input.Name)
}
if input.Description != nil {
q = q.Set(gopgutil.BuildConditionEquals("description"), *input.Description)
}
return q, nil
}
}
func applyProfessionFilter(f internal.ProfessionFilter, alias string) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.IDNEQ))
}
if !isZero(f.Slug) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("slug", alias), pg.Array(f.Slug))
}
if !isZero(f.SlugNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("slug", alias), pg.Array(f.SlugNEQ))
}
if !isZero(f.Name) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("name", alias), pg.Array(f.Name))
}
if !isZero(f.NameNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("name", alias), pg.Array(f.NameNEQ))
}
if !isZero(f.NameMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("name", alias), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("name", alias), f.NameIEQ)
}
if !isZero(f.DescriptionMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("description", alias), f.DescriptionMATCH)
}
if !isZero(f.DescriptionIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("description", alias), f.DescriptionIEQ)
}
if !isZero(f.QualificationID) {
sliceLength := len(f.QualificationID)
subquery := q.
New().
Model(&QualificationToProfession{}).
ColumnExpr(gopgutil.BuildCountColumnExpr("qualification_id", "count")).
Column("profession_id").
Where(gopgutil.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(gopgutil.BuildConditionGTE("count"), sliceLength)
}
if !isZero(f.CreatedAt) {
q = q.Where(gopgutil.BuildConditionEquals("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAt)
}
if !isZero(f.CreatedAtGT) {
q = q.Where(gopgutil.BuildConditionGT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGT)
}
if !isZero(f.CreatedAtGTE) {
q = q.Where(gopgutil.BuildConditionGTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGTE)
}
if !isZero(f.CreatedAtLT) {
q = q.Where(gopgutil.BuildConditionLT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLT)
}
if !isZero(f.CreatedAtLTE) {
q = q.Where(gopgutil.BuildConditionLTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLTE)
}
return q, nil
}
}

View File

@ -0,0 +1,186 @@
package postgres
import (
"context"
"github.com/Kichiyaki/gopgutil/v10"
"github.com/zdam-egzamin-zawodowy/backend/internal"
"time"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
"github.com/gosimple/slug"
)
var _ pg.BeforeInsertHook = (*Qualification)(nil)
var _ pg.BeforeUpdateHook = (*Qualification)(nil)
type Qualification struct {
tableName struct{} `pg:"alias:qualification"`
ID int
Slug string `pg:",unique"`
Name string `pg:",unique:group_1"`
Code string `pg:",unique:group_1"`
Formula string
Description string
CreatedAt time.Time `pg:"default:now()"`
}
func (q *Qualification) BeforeInsert(ctx context.Context) (context.Context, error) {
q.CreatedAt = time.Now()
q.Slug = slug.Make(q.Code)
return ctx, nil
}
func (q *Qualification) BeforeUpdate(ctx context.Context) (context.Context, error) {
if q.Code != "" {
q.Slug = slug.Make(q.Code)
}
return ctx, nil
}
type QualificationToProfession struct {
ID int
QualificationID int `pg:"on_delete:CASCADE,unique:group_1"`
Qualification *Qualification `pg:"rel:has-one"`
ProfessionID int `pg:"on_delete:CASCADE,unique:group_1"`
Profession *Profession `pg:"rel:has-one"`
}
func applyQualificationInputUpdates(input internal.QualificationInput) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if input.Name != nil {
q = q.Set(gopgutil.BuildConditionEquals("name"), *input.Name)
}
if input.Code != nil {
q = q.Set(gopgutil.BuildConditionEquals("code"), *input.Code)
}
if input.Formula != nil {
q = q.Set(gopgutil.BuildConditionEquals("formula"), *input.Formula)
}
if input.Description != nil {
q = q.Set(gopgutil.BuildConditionEquals("description"), *input.Description)
}
return q, nil
}
}
func applyQualificationFilterOr(f internal.QualificationFilterOr, alias string) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.NameMATCH) {
q = q.WhereOr(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("name", alias), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.WhereOr(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("name", alias), f.NameIEQ)
}
if !isZero(f.CodeMATCH) {
q = q.WhereOr(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("code", alias), f.CodeMATCH)
}
if !isZero(f.CodeIEQ) {
q = q.WhereOr(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("code", alias), f.CodeIEQ)
}
return q, nil
})
return q, nil
}
}
func applyQualificationFilter(f internal.QualificationFilter, alias string) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.IDNEQ))
}
if !isZero(f.Slug) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("slug", alias), pg.Array(f.Slug))
}
if !isZero(f.SlugNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("slug", alias), pg.Array(f.SlugNEQ))
}
if !isZero(f.Name) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("name", alias), pg.Array(f.Name))
}
if !isZero(f.NameNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("name", alias), pg.Array(f.NameNEQ))
}
if !isZero(f.NameMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("name", alias), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("name", alias), f.NameIEQ)
}
if !isZero(f.Code) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("code", alias), pg.Array(f.Code))
}
if !isZero(f.CodeNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("code", alias), pg.Array(f.CodeNEQ))
}
if !isZero(f.CodeMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("code", alias), f.CodeMATCH)
}
if !isZero(f.CodeIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("code", alias), f.CodeIEQ)
}
if !isZero(f.Formula) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("formula", alias), pg.Array(f.Formula))
}
if !isZero(f.FormulaNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("formula", alias), pg.Array(f.FormulaNEQ))
}
if !isZero(f.DescriptionMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("description", alias), f.DescriptionMATCH)
}
if !isZero(f.DescriptionIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("description", alias), f.DescriptionIEQ)
}
if !isZero(f.ProfessionID) {
sliceLength := len(f.ProfessionID)
subquery := q.
New().
Model(&QualificationToProfession{}).
ColumnExpr(gopgutil.BuildCountColumnExpr("profession_id", "count")).
Column("qualification_id").
Where(gopgutil.BuildConditionArray("profession_id"), pg.Array(f.ProfessionID)).
Group("qualification_id")
q = q.
Join(`INNER JOIN (?) AS qualification_to_professions ON qualification_to_professions.qualification_id = qualification.id`, subquery).
Where(gopgutil.BuildConditionGTE("count"), sliceLength)
}
if !isZero(f.CreatedAt) {
q = q.Where(gopgutil.BuildConditionEquals("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAt)
}
if !isZero(f.CreatedAtGT) {
q = q.Where(gopgutil.BuildConditionGT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGT)
}
if !isZero(f.CreatedAtGTE) {
q = q.Where(gopgutil.BuildConditionGTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGTE)
}
if !isZero(f.CreatedAtLT) {
q = q.Where(gopgutil.BuildConditionLT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLT)
}
if !isZero(f.CreatedAtLTE) {
q = q.Where(gopgutil.BuildConditionLTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLTE)
}
q = q.Apply(applyQualificationFilterOr(f.Or, alias))
return q, nil
}
}

View File

@ -0,0 +1,141 @@
package postgres
import (
"context"
"github.com/Kichiyaki/gopgutil/v10"
"github.com/zdam-egzamin-zawodowy/backend/internal"
"time"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
)
var _ pg.BeforeInsertHook = (*Question)(nil)
type Question struct {
tableName struct{} `pg:"alias:question"`
ID int
From string `pg:",unique:group_1"`
Content string `pg:",unique:group_1,notnull"`
Explanation string
CorrectAnswer Answer `pg:",unique:group_1,notnull"`
Image string
AnswerA string `pg:"answer_a"`
AnswerAImage string `pg:"answer_a_image"`
AnswerB string `pg:"answer_b" `
AnswerBImage string `pg:"answer_b_image"`
AnswerC string `pg:"answer_c" `
AnswerCImage string `pg:"answer_c_image"`
AnswerD string `pg:"answer_d" `
AnswerDImage string `pg:"answer_d_image"`
QualificationID int `pg:",unique:group_1,on_delete:CASCADE"`
Qualification *Qualification `pg:"rel:has-one"`
CreatedAt time.Time `pg:"default:now()"`
UpdatedAt time.Time `pg:"default:now()"`
}
func (q *Question) BeforeInsert(ctx context.Context) (context.Context, error) {
q.CreatedAt = time.Now()
q.UpdatedAt = time.Now()
return ctx, nil
}
func applyQuestionInputUpdates(input internal.QuestionInput) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if input.Content != nil {
q = q.Set(
gopgutil.BuildConditionEquals("content"),
*input.Content,
)
}
if input.From != nil {
q = q.Set(
gopgutil.BuildConditionEquals("?"),
pg.Ident("from"),
*input.From,
)
}
if input.Explanation != nil {
q = q.Set(gopgutil.BuildConditionEquals("explanation"), *input.Explanation)
}
if input.CorrectAnswer != nil {
q = q.Set(gopgutil.BuildConditionEquals("correct_answer"), *input.CorrectAnswer)
}
if input.AnswerA != nil {
q = q.Set(gopgutil.BuildConditionEquals("answer_a"), *input.AnswerA)
}
if input.AnswerB != nil {
q = q.Set(gopgutil.BuildConditionEquals("answer_b"), *input.AnswerB)
}
if input.AnswerC != nil {
q = q.Set(gopgutil.BuildConditionEquals("answer_c"), *input.AnswerC)
}
if input.AnswerD != nil {
q = q.Set(gopgutil.BuildConditionEquals("answer_d"), *input.AnswerD)
}
if input.QualificationID != nil {
q = q.Set(gopgutil.BuildConditionEquals("qualification_id"), *input.QualificationID)
}
return q, nil
}
}
func applyQuestionFilter(f internal.QuestionFilter, alias string) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.IDNEQ))
}
if !isZero(f.From) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("from", alias), pg.Array(f.From))
}
if !isZero(f.ContentMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("content", alias), f.ContentMATCH)
}
if !isZero(f.ContentIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("content", alias), f.ContentIEQ)
}
if !isZero(f.QualificationID) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("qualification_id", alias), pg.Array(f.QualificationID))
}
if !isZero(f.QualificationIDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("qualification_id", alias), pg.Array(f.QualificationIDNEQ))
}
if !isZero(f.CreatedAt) {
q = q.Where(gopgutil.BuildConditionEquals("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAt)
}
if !isZero(f.CreatedAtGT) {
q = q.Where(gopgutil.BuildConditionGT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGT)
}
if !isZero(f.CreatedAtGTE) {
q = q.Where(gopgutil.BuildConditionGTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGTE)
}
if !isZero(f.CreatedAtLT) {
q = q.Where(gopgutil.BuildConditionLT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLT)
}
if !isZero(f.CreatedAtLTE) {
q = q.Where(gopgutil.BuildConditionLTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLTE)
}
q = q.Apply(applyQualificationFilter(f.QualificationFilter, "qualification"))
return q, nil
}
}

21
internal/postgres/role.go Normal file
View File

@ -0,0 +1,21 @@
package postgres
type Role string
const (
RoleAdmin Role = "admin"
RoleUser Role = "user"
)
func (role Role) IsValid() bool {
switch role {
case RoleAdmin,
RoleUser:
return true
}
return false
}
func (role Role) String() string {
return string(role)
}

161
internal/postgres/user.go Normal file
View File

@ -0,0 +1,161 @@
package postgres
import (
"context"
"github.com/Kichiyaki/gopgutil/v10"
"github.com/zdam-egzamin-zawodowy/backend/internal"
"time"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
"golang.org/x/crypto/bcrypt"
)
var _ pg.BeforeInsertHook = (*User)(nil)
type User struct {
tableName struct{} `pg:"alias:user"`
ID int `json:"id" pg:",pk" xml:"id" gqlgen:"id"`
DisplayName string `json:"displayName" pg:",use_zero,notnull" xml:"displayName" gqlgen:"displayName"`
Password string `json:"-" gqlgen:"-" xml:"password"`
Email string `json:"email" pg:",unique" xml:"email" gqlgen:"email"`
CreatedAt time.Time `json:"createdAt" pg:"default:now()" xml:"createdAt" gqlgen:"createdAt"`
Role Role `json:"role" xml:"role" gqlgen:"role"`
Activated *bool `json:"activated" pg:"default:false,use_zero" xml:"activated" gqlgen:"activated"`
}
func (u *User) BeforeInsert(ctx context.Context) (context.Context, error) {
u.CreatedAt = time.Now()
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(u.Password), bcrypt.DefaultCost)
if err != nil {
return ctx, err
}
u.Password = string(hashedPassword)
return ctx, nil
}
func applyUserInputUpdates(input internal.UserInput) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if input.DisplayName != nil {
q = q.Set(gopgutil.BuildConditionEquals("display_name"), *input.DisplayName)
}
if input.Password != nil {
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(*input.Password), bcrypt.DefaultCost)
if err != nil {
return q, err
}
q = q.Set(gopgutil.BuildConditionEquals("password"), string(hashedPassword))
}
if input.Email != nil {
q = q.Set(gopgutil.BuildConditionEquals("email"), *input.Email)
}
if input.Role != nil {
q = q.Set(gopgutil.BuildConditionEquals("role"), *input.Role)
}
if input.Activated != nil {
q = q.Set(gopgutil.BuildConditionEquals("activated"), *input.Activated)
}
return q, nil
}
}
func applyUserFilterOr(f internal.UserFilterOr, alias string) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.DisplayNameMATCH) {
q = q.WhereOr(
gopgutil.BuildConditionMatch("?"),
gopgutil.AddAliasToColumnName("display_name", alias),
f.DisplayNameMATCH,
)
}
if !isZero(f.DisplayNameIEQ) {
q = q.WhereOr(
gopgutil.BuildConditionIEQ("?"),
gopgutil.AddAliasToColumnName("display_name", alias),
f.DisplayNameIEQ,
)
}
if !isZero(f.EmailMATCH) {
q = q.WhereOr(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("email", alias), f.EmailMATCH)
}
if !isZero(f.EmailIEQ) {
q = q.WhereOr(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("email", alias), f.EmailIEQ)
}
return q, nil
})
return q, nil
}
}
func applyUserFilter(f internal.UserFilter, alias string) func(q *orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("id", alias), pg.Array(f.IDNEQ))
}
if !isZero(f.Activated) {
q = q.Where(gopgutil.BuildConditionEquals("?"), gopgutil.AddAliasToColumnName("activated", alias), f.Activated)
}
if !isZero(f.DisplayName) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("display_name", alias), pg.Array(f.DisplayName))
}
if !isZero(f.DisplayNameNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("display_name", alias), pg.Array(f.DisplayNameNEQ))
}
if !isZero(f.DisplayNameMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("display_name", alias), f.DisplayNameMATCH)
}
if !isZero(f.DisplayNameIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("display_name", alias), f.DisplayNameIEQ)
}
if !isZero(f.Email) {
q = q.Where(gopgutil.BuildConditionArray("?"), gopgutil.AddAliasToColumnName("email", alias), pg.Array(f.Email))
}
if !isZero(f.EmailNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray("?"), gopgutil.AddAliasToColumnName("email", alias), pg.Array(f.EmailNEQ))
}
if !isZero(f.EmailMATCH) {
q = q.Where(gopgutil.BuildConditionMatch("?"), gopgutil.AddAliasToColumnName("email", alias), f.EmailMATCH)
}
if !isZero(f.EmailIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ("?"), gopgutil.AddAliasToColumnName("email", alias), f.EmailIEQ)
}
if !isZero(f.CreatedAt) {
q = q.Where(gopgutil.BuildConditionEquals("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAt)
}
if !isZero(f.CreatedAtGT) {
q = q.Where(gopgutil.BuildConditionGT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGT)
}
if !isZero(f.CreatedAtGTE) {
q = q.Where(gopgutil.BuildConditionGTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtGTE)
}
if !isZero(f.CreatedAtLT) {
q = q.Where(gopgutil.BuildConditionLT("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLT)
}
if !isZero(f.CreatedAtLTE) {
q = q.Where(gopgutil.BuildConditionLTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLTE)
}
q = q.Apply(applyUserFilterOr(f.Or, alias))
return q, nil
}
}

View File

@ -203,9 +203,9 @@ type QuestionFilter struct {
ContentMATCH string `json:"contentMATCH" xml:"contentMATCH" gqlgen:"contentMATCH"`
ContentIEQ string `json:"contentIEQ" xml:"contentIEQ" gqlgen:"contentIEQ"`
QualificationID []int `json:"qualificationID" xml:"qualificationID" gqlgen:"qualificationID"`
QualificationIDNEQ []int `json:"qualificationIDNEQ" xml:"qualificationIDNEQ" gqlgen:"qualificationIDNEQ"`
QualificationFilter *QualificationFilter `json:"qualificationFilter" xml:"qualificationFilter" gqlgen:"qualificationFilter"`
QualificationID []int `json:"qualificationID" xml:"qualificationID" gqlgen:"qualificationID"`
QualificationIDNEQ []int `json:"qualificationIDNEQ" xml:"qualificationIDNEQ" gqlgen:"qualificationIDNEQ"`
QualificationFilter QualificationFilter `json:"qualificationFilter" xml:"qualificationFilter" gqlgen:"qualificationFilter"`
CreatedAt time.Time `gqlgen:"createdAt" json:"createdAt" xml:"createdAt"`
CreatedAtGT time.Time `gqlgen:"createdAtGT" json:"createdAtGT" xml:"createdAtGT"`
@ -245,11 +245,9 @@ func (f *QuestionFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query,
}
var err error
if f.QualificationFilter != nil {
q, err = f.QualificationFilter.WhereWithAlias(q.Relation("Qualification._"), "qualification")
if err != nil {
return q, err
}
q, err = f.QualificationFilter.WhereWithAlias(q.Relation("Qualification._"), "qualification")
if err != nil {
return q, err
}
if !isZero(f.CreatedAt) {

View File

@ -194,7 +194,7 @@ type UserFilter struct {
CreatedAtLT time.Time `json:"createdAtLT" xml:"createdAtLT" gqlgen:"createdAtLT"`
CreatedAtLTE time.Time `json:"createdAtLTE" xml:"createdAtLTE" gqlgen:"createdAtLTE"`
Or *UserFilterOr
Or UserFilterOr
}
func (f *UserFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
@ -255,9 +255,7 @@ func (f *UserFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, err
q = q.Where(gopgutil.BuildConditionLTE("?"), gopgutil.AddAliasToColumnName("created_at", alias), f.CreatedAtLTE)
}
if f.Or != nil {
q = f.Or.WhereWithAlias(q, alias)
}
q = f.Or.WhereWithAlias(q, alias)
return q, nil
}