File tree Expand file tree Collapse file tree 5 files changed +52
-15
lines changed Expand file tree Collapse file tree 5 files changed +52
-15
lines changed Original file line number Diff line number Diff line change @@ -85,6 +85,7 @@ func InitDB(dbConfig Config) *gorm.DB {
8585
8686func initTables (db * gorm.DB ) {
8787 initSportsTable (db )
88+ deleteAllSeedPlayers (db )
8889 initPlayersTable (db )
8990}
9091
@@ -93,7 +94,7 @@ func initPlayersTable(db *gorm.DB) {
9394
9495 db .AutoMigrate (& models.Player {})
9596 for _ , p := range models .GenerateSeedPlayers () {
96- if err := InsertPlayer (db , & p ); err != nil {
97+ if err := InsertPlayer (db , p ); err != nil {
9798 log .Warn (err )
9899 }
99100 }
Original file line number Diff line number Diff line change 55
66 "github.com/adamdevigili/skillbased/api/pkg/models"
77 "github.com/jinzhu/gorm"
8+ "github.com/labstack/gommon/log"
89)
910
1011func InsertPlayer (db * gorm.DB , player * models.Player ) error {
@@ -47,3 +48,8 @@ func DeletePlayer(db *gorm.DB, id string) error {
4748 return nil
4849 }
4950}
51+
52+ func deleteAllSeedPlayers (db * gorm.DB ) {
53+ log .Info ("deleteing all seed players from existing DB" )
54+ db .Where ("is_seed = ?" , "t" ).Delete (& models.Player {})
55+ }
Original file line number Diff line number Diff line change 11package models
22
3+ import (
4+ "encoding/json"
5+
6+ "github.com/jinzhu/gorm"
7+ "github.com/jinzhu/gorm/dialects/postgres"
8+ )
9+
310type Player struct {
4- ID string `json:"id"`
11+ Base
512 FirstName string `json:"first_name"`
613 LastName string `json:"last_name"`
714
815 // Skills is a map relating an existing Sport's ID to a SkillMap (map of skill name to rating out of 10)
9- Skills map [string ]SkillMap `json:"skills"`
10- PowerScores map [string ]int `json:"power_scores"`
11- IsSeed bool `json:"-"`
16+ Skills map [string ]SkillMap `gorm:"-" json:"skills"`
17+ SkillsDB postgres.Jsonb `json:"-"`
18+
19+ PowerScores map [string ]int `gorm:"-" json:"power_scores"`
20+ PowerScoresDB postgres.Jsonb `json:"-"`
21+
22+ IsSeed bool `json:"-"`
23+ }
24+
25+ // BeforeCreate is a GORM hook that is used to convert the Go map to a JSON struct to be stored in postgres
26+ func (p * Player ) BeforeCreate (scope * gorm.Scope ) (err error ) {
27+ if x , err := json .Marshal (p .PowerScores ); err != nil {
28+ return err
29+ } else {
30+ p .PowerScoresDB = postgres.Jsonb {RawMessage : x }
31+ }
32+
33+ return
1234}
1335
1436type PlayerList struct {
Original file line number Diff line number Diff line change 11package models
22
33import (
4+ "fmt"
5+
46 "github.com/pioz/faker"
57 "github.com/rs/xid"
68)
@@ -55,19 +57,28 @@ var (
5557
5658var playersToGenerate = 30
5759
58- func GenerateSeedPlayers () []Player {
60+ func GenerateSeedPlayers () []* Player {
5961 faker .SetSeed (623 )
60- players := make ([]Player , playersToGenerate )
62+ players := make ([]* Player , playersToGenerate )
63+
64+ for i := range players {
65+ fn , ln := faker .FirstName (), faker .LastName ()
66+ p := & Player {
67+ FirstName : fn ,
68+ LastName : ln ,
69+ Base : Base {
70+ Name : fmt .Sprintf ("%s %s" , fn , ln ),
71+ ID : xid .New (),
72+ },
73+ PowerScores : make (map [string ]int ),
74+ IsSeed : true ,
75+ }
6176
62- for _ , p := range players {
63- p .ID = xid .New ().String ()
64- p .FirstName = faker .FirstName ()
65- p .LastName = faker .LastName ()
6677 for _ , s := range skillsList {
6778 p .PowerScores [s ] = faker .IntInRange (1 , 10 )
6879 }
6980
70- p . IsSeed = true
81+ players [ i ] = p
7182 }
7283
7384 return players
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments