[WIP] update TribeHistoryFilter, add TribeHistoryRelationshipAndSortAppender

This commit is contained in:
Dawid Wysokiński 2021-01-06 15:38:25 +01:00
parent 9cff70a9fa
commit bf9e1fc667
1 changed files with 67 additions and 9 deletions

View File

@ -1,6 +1,11 @@
package models
import "time"
import (
"time"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
)
type TribeHistory struct {
tableName struct{} `pg:"?SERVER.tribe_history,alias:tribe_history"`
@ -19,18 +24,71 @@ type TribeHistory struct {
}
type TribeHistoryFilter struct {
tableName struct{} `urlstruct:"tribe_history"`
TribeID []int `json:"tribeID" gqlgen:"tribeID" xml:"tribeID"`
TribeIdNEQ []int `json:"tribeIDNEQ" gqlgen:"tribeIDNEQ" xml:"tribeIDNEQ"`
TribeID []int `json:"tribeID" gqlgen:"tribeID" xml:"tribeID"`
TribeIDNEQ []int `json:"tribeIDNEQ" gqlgen:"tribeIDNEQ" xml:"tribeIDNEQ"`
TribeFilter *TribeFilter `json:"tribeFilter" xml:"tribeFilter" gqlgen:"tribeFilter"`
CreateDate time.Time `json:"createDate" gqlgen:"createDate" xml:"createDate"`
CreateDateGT time.Time `json:"createDateGT" gqlgen:"createDateGT" xml:"createDateGT"`
CreateDateGTE time.Time `json:"createDateGTE" gqlgen:"createDateGTE" xml:"createDateGTE"`
CreateDateLT time.Time `json:"createDateLT" gqlgen:"createDateLT" xml:"createDateLT"`
CreateDateLTE time.Time `json:"createDateLTE" gqlgen:"createDateLTE" xml:"createDateLTE"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset" xml:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit" xml:"limit"`
Sort string `urlstruct:",nowhere" json:"sort" gqlgen:"sort" xml:"sort"`
}
func (f *TribeHistoryFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if !isZero(f.CreateDate) {
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
}
if !isZero(f.CreateDateGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
}
if !isZero(f.CreateDateGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
}
if !isZero(f.CreateDateLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
}
if !isZero(f.CreateDateLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
}
if !isZero(f.TribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
}
if !isZero(f.TribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
}
return q, nil
}
func (f *TribeHistoryFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "tribe_history")
}
type TribeHistoryRelationshipAndSortAppender struct {
Filter *TribeHistoryFilter
Sort []string
}
func (a *TribeHistoryRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
tribeRequired := findStringWithPrefix(a.Sort, "tribe.") != ""
if a.Filter.TribeFilter != nil {
q, err = a.Filter.TribeFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
tribeRequired = true
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if tribeRequired {
q = q.Relation("Tribe._")
}
return q, nil
}