extend DailyTribeStatsFilter and DailyPlayerStatsFilter | ennoblement pg_repository is now appending EnnoblementFilterOr | update schema | update github.com/tribalwarshelp/shared

This commit is contained in:
Dawid Wysokiński 2020-07-17 11:52:42 +02:00
parent df5398a9a0
commit b3529e4a54
12 changed files with 137 additions and 1 deletions

View File

@ -34,6 +34,15 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg dailyplayerstats.FetchC
if cfg.Filter.Sort != "" {
query = query.Order(cfg.Filter.Sort)
}
if cfg.Filter.PlayerFilter != nil {
query = query.Relation("Player._").WhereStruct(cfg.Filter.PlayerFilter)
if cfg.Filter.PlayerFilter.TribeFilter != nil {
query = query.
Join("LEFT JOIN ?SERVER.tribes AS tribe ON tribe.id = player.tribe_id").
WhereStruct(cfg.Filter.PlayerFilter.TribeFilter)
}
}
}
if cfg.Count {

View File

@ -34,6 +34,10 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg dailytribestats.FetchCo
if cfg.Filter.Sort != "" {
query = query.Order(cfg.Filter.Sort)
}
if cfg.Filter.TribeFilter != nil {
query = query.Relation("Tribe._").WhereStruct(cfg.Filter.TribeFilter)
}
}
if cfg.Count {

View File

@ -0,0 +1,28 @@
package repository
import (
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
"github.com/tribalwarshelp/shared/models"
)
func appendWhereClauseForEnnoblementFilterOr(or *models.EnnoblementFilterOr) func(*orm.Query) (*orm.Query, error) {
return func(q *orm.Query) (*orm.Query, error) {
if or != nil {
if len(or.NewOwnerID) > 0 {
q = q.WhereOr("new_owner_id IN (?)", pg.In(or.NewOwnerID))
}
if len(or.NewOwnerTribeID) > 0 {
q = q.WhereOr("new_owner_tribe_id IN (?)", pg.In(or.NewOwnerTribeID))
}
if len(or.OldOwnerID) > 0 {
q = q.WhereOr("old_owner_id IN (?)", pg.In(or.OldOwnerID))
}
if len(or.OldOwnerTribeID) > 0 {
q = q.WhereOr("old_owner_tribe_id IN (?)", pg.In(or.OldOwnerTribeID))
}
}
return q, nil
}
}

View File

@ -34,6 +34,8 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg ennoblement.FetchConfig
if cfg.Filter.Sort != "" {
query = query.Order(cfg.Filter.Sort)
}
query = query.WhereGroup(appendWhereClauseForEnnoblementFilterOr(cfg.Filter.Or))
}
if cfg.Count {

2
go.mod
View File

@ -16,7 +16,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/segmentio/encoding v0.1.14 // indirect
github.com/tribalwarshelp/map-generator v0.0.0-20200623143352-cc037d744be2
github.com/tribalwarshelp/shared v0.0.0-20200716113106-11ff9ddf1bda
github.com/tribalwarshelp/shared v0.0.0-20200717091627-87f23d34cff8
github.com/vektah/gqlparser/v2 v2.0.1
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect
google.golang.org/protobuf v1.25.0 // indirect

2
go.sum
View File

@ -189,6 +189,8 @@ github.com/tribalwarshelp/shared v0.0.0-20200622084436-3a768c8bf574 h1:y2EoH6zRK
github.com/tribalwarshelp/shared v0.0.0-20200622084436-3a768c8bf574/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
github.com/tribalwarshelp/shared v0.0.0-20200716113106-11ff9ddf1bda h1:bMO271vY8rLlypSHzSfANe7rz7dUi/+uNkcv7qUOWxw=
github.com/tribalwarshelp/shared v0.0.0-20200716113106-11ff9ddf1bda/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
github.com/tribalwarshelp/shared v0.0.0-20200717091627-87f23d34cff8 h1:oHu1004MQm/Y/474uvp1iYAABQjSZsdrb3pxjRSdOb4=
github.com/tribalwarshelp/shared v0.0.0-20200717091627-87f23d34cff8/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=

View File

@ -3314,6 +3314,7 @@ type DailyPlayerStats {
input DailyPlayerStatsFilter {
playerID: [Int!]
playerIDNEQ: [Int!]
playerFilter: PlayerFilter
createDate: Time
createDateGT: Time
@ -3358,6 +3359,7 @@ type DailyTribeStats {
input DailyTribeStatsFilter {
tribeID: [Int!]
tribeIDNEQ: [Int!]
tribeFilter: TribeFilter
createDate: Time
createDateGT: Time
@ -3396,6 +3398,13 @@ type EnnoblementList {
total: Int!
}
input EnnoblementFilterOr {
newOwnerID: [Int!]
newOwnerTribeID: [Int!]
oldOwnerID: [Int!]
oldOwnerTribeID: [Int!]
}
input EnnoblementFilter {
villageID: [Int!]
villageIDNEQ: [Int!]
@ -3416,6 +3425,8 @@ input EnnoblementFilter {
ennobledAtLT: Time
ennobledAtLTE: Time
or: EnnoblementFilterOr
offset: Int
limit: Int
sort: String
@ -17872,6 +17883,12 @@ func (ec *executionContext) unmarshalInputDailyPlayerStatsFilter(ctx context.Con
if err != nil {
return it, err
}
case "playerFilter":
var err error
it.PlayerFilter, err = ec.unmarshalOPlayerFilter2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐPlayerFilter(ctx, v)
if err != nil {
return it, err
}
case "createDate":
var err error
it.CreateDate, err = ec.unmarshalOTime2timeᚐTime(ctx, v)
@ -17944,6 +17961,12 @@ func (ec *executionContext) unmarshalInputDailyTribeStatsFilter(ctx context.Cont
if err != nil {
return it, err
}
case "tribeFilter":
var err error
it.TribeFilter, err = ec.unmarshalOTribeFilter2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐTribeFilter(ctx, v)
if err != nil {
return it, err
}
case "createDate":
var err error
it.CreateDate, err = ec.unmarshalOTime2timeᚐTime(ctx, v)
@ -18094,6 +18117,12 @@ func (ec *executionContext) unmarshalInputEnnoblementFilter(ctx context.Context,
if err != nil {
return it, err
}
case "or":
var err error
it.Or, err = ec.unmarshalOEnnoblementFilterOr2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx, v)
if err != nil {
return it, err
}
case "offset":
var err error
it.Offset, err = ec.unmarshalOInt2int(ctx, v)
@ -18118,6 +18147,42 @@ func (ec *executionContext) unmarshalInputEnnoblementFilter(ctx context.Context,
return it, nil
}
func (ec *executionContext) unmarshalInputEnnoblementFilterOr(ctx context.Context, obj interface{}) (models.EnnoblementFilterOr, error) {
var it models.EnnoblementFilterOr
var asMap = obj.(map[string]interface{})
for k, v := range asMap {
switch k {
case "newOwnerID":
var err error
it.NewOwnerID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
if err != nil {
return it, err
}
case "newOwnerTribeID":
var err error
it.NewOwnerTribeID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
if err != nil {
return it, err
}
case "oldOwnerID":
var err error
it.OldOwnerID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
if err != nil {
return it, err
}
case "oldOwnerTribeID":
var err error
it.OldOwnerTribeID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
if err != nil {
return it, err
}
}
}
return it, nil
}
func (ec *executionContext) unmarshalInputLangVersionFilter(ctx context.Context, obj interface{}) (models.LangVersionFilter, error) {
var it models.LangVersionFilter
var asMap = obj.(map[string]interface{})
@ -24046,6 +24111,18 @@ func (ec *executionContext) unmarshalOEnnoblementFilter2ᚖgithubᚗcomᚋtribal
return &res, err
}
func (ec *executionContext) unmarshalOEnnoblementFilterOr2githubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx context.Context, v interface{}) (models.EnnoblementFilterOr, error) {
return ec.unmarshalInputEnnoblementFilterOr(ctx, v)
}
func (ec *executionContext) unmarshalOEnnoblementFilterOr2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx context.Context, v interface{}) (*models.EnnoblementFilterOr, error) {
if v == nil {
return nil, nil
}
res, err := ec.unmarshalOEnnoblementFilterOr2githubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx, v)
return &res, err
}
func (ec *executionContext) unmarshalOInt2int(ctx context.Context, v interface{}) (int, error) {
return graphql.UnmarshalInt(v)
}

View File

@ -78,6 +78,8 @@ models:
model: github.com/tribalwarshelp/shared/models.Ennoblement
EnnoblementFilter:
model: github.com/tribalwarshelp/shared/models.EnnoblementFilter
EnnoblementFilterOr:
model: github.com/tribalwarshelp/shared/models.EnnoblementFilterOr
PlayerHistoryRecord:
model: github.com/tribalwarshelp/shared/models.PlayerHistory
PlayerHistoryFilter:

View File

@ -22,6 +22,7 @@ type DailyPlayerStats {
input DailyPlayerStatsFilter {
playerID: [Int!]
playerIDNEQ: [Int!]
playerFilter: PlayerFilter
createDate: Time
createDateGT: Time

View File

@ -23,6 +23,7 @@ type DailyTribeStats {
input DailyTribeStatsFilter {
tribeID: [Int!]
tribeIDNEQ: [Int!]
tribeFilter: TribeFilter
createDate: Time
createDateGT: Time

View File

@ -12,6 +12,13 @@ type EnnoblementList {
total: Int!
}
input EnnoblementFilterOr {
newOwnerID: [Int!]
newOwnerTribeID: [Int!]
oldOwnerID: [Int!]
oldOwnerTribeID: [Int!]
}
input EnnoblementFilter {
villageID: [Int!]
villageIDNEQ: [Int!]
@ -32,6 +39,8 @@ input EnnoblementFilter {
ennobledAtLT: Time
ennobledAtLTE: Time
or: EnnoblementFilterOr
offset: Int
limit: Int
sort: String

View File

@ -75,6 +75,7 @@ func main() {
log.Fatal("Database disconnecting:", err)
}
}()
// db.AddQueryHook(pgext.DebugHook{})
redisClient := redis.NewClient(&redis.Options{
Addr: os.Getenv("REDIS_HOST") + ":" + os.Getenv("REDIS_PORT"),