From 9cae454fb47c84361e662ffe9744681480664661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wysoki=C5=84ski?= Date: Wed, 19 Oct 2022 08:54:09 +0200 Subject: [PATCH] refactor: base models --- internal/bundb/internal/model/ennoblement.go | 30 +++---- .../bundb/internal/model/ennoblement_test.go | 18 ++-- internal/bundb/internal/model/player.go | 26 +++--- internal/bundb/internal/model/tribe.go | 30 +++---- internal/bundb/internal/model/village.go | 26 +++--- internal/service/ennoblement.go | 3 +- internal/service/tribe.go | 15 +++- internal/service/tribe_test.go | 89 +++++++++++-------- internal/service/village.go | 12 ++- internal/service/village_test.go | 40 ++++----- 10 files changed, 153 insertions(+), 136 deletions(-) diff --git a/internal/bundb/internal/model/ennoblement.go b/internal/bundb/internal/model/ennoblement.go index 1c24fc5..654277a 100644 --- a/internal/bundb/internal/model/ennoblement.go +++ b/internal/bundb/internal/model/ennoblement.go @@ -82,21 +82,19 @@ func (e Ennoblement) ToDomain() domain.Ennoblement { } return domain.Ennoblement{ - BaseEnnoblement: domain.BaseEnnoblement{ - VillageID: e.VillageID, - NewOwnerID: e.NewOwnerID, - NewTribeID: e.NewTribeID, - OldOwnerID: e.OldOwnerID, - OldTribeID: e.OldTribeID, - Points: e.Points, - CreatedAt: e.CreatedAt, - }, - ID: e.ID, - Village: village, - NewOwner: newOwner, - NewTribe: newTribe, - OldOwner: oldOwner, - OldTribe: oldTribe, - ServerKey: e.ServerKey, + VillageID: e.VillageID, + NewOwnerID: e.NewOwnerID, + NewTribeID: e.NewTribeID, + OldOwnerID: e.OldOwnerID, + OldTribeID: e.OldTribeID, + Points: e.Points, + CreatedAt: e.CreatedAt, + ID: e.ID, + Village: village, + NewOwner: newOwner, + NewTribe: newTribe, + OldOwner: oldOwner, + OldTribe: oldTribe, + ServerKey: e.ServerKey, } } diff --git a/internal/bundb/internal/model/ennoblement_test.go b/internal/bundb/internal/model/ennoblement_test.go index 999603b..0ecd216 100644 --- a/internal/bundb/internal/model/ennoblement_test.go +++ b/internal/bundb/internal/model/ennoblement_test.go @@ -15,16 +15,14 @@ func TestEnnoblement(t *testing.T) { var id int64 = 1234 params := domain.CreateEnnoblementParams{ - BaseEnnoblement: domain.BaseEnnoblement{ - VillageID: 112, - NewOwnerID: 113, - NewTribeID: 114, - OldOwnerID: 115, - OldTribeID: 116, - Points: 117, - CreatedAt: time.Now().Add(-20 * time.Hour), - }, - ServerKey: "pl151", + VillageID: 112, + NewOwnerID: 113, + NewTribeID: 114, + OldOwnerID: 115, + OldTribeID: 116, + Points: 117, + CreatedAt: time.Now().Add(-20 * time.Hour), + ServerKey: "pl151", } result := model.NewEnnoblement(params) diff --git a/internal/bundb/internal/model/player.go b/internal/bundb/internal/model/player.go index b5e681e..76e2ef4 100644 --- a/internal/bundb/internal/model/player.go +++ b/internal/bundb/internal/model/player.go @@ -49,19 +49,17 @@ func (p Player) ToDomain() domain.Player { } } return domain.Player{ - BasePlayer: domain.BasePlayer{ - OpponentsDefeated: domain.OpponentsDefeated(p.OpponentsDefeated), - ID: p.ID, - Name: p.Name, - NumVillages: p.NumVillages, - Points: p.Points, - Rank: p.Rank, - TribeID: p.TribeID, - ProfileURL: p.ProfileURL, - }, - ServerKey: p.ServerKey, - Tribe: tribe, - CreatedAt: p.CreatedAt, - DeletedAt: p.DeletedAt, + OpponentsDefeated: domain.OpponentsDefeated(p.OpponentsDefeated), + ID: p.ID, + Name: p.Name, + NumVillages: p.NumVillages, + Points: p.Points, + Rank: p.Rank, + TribeID: p.TribeID, + ProfileURL: p.ProfileURL, + ServerKey: p.ServerKey, + Tribe: tribe, + CreatedAt: p.CreatedAt, + DeletedAt: p.DeletedAt, } } diff --git a/internal/bundb/internal/model/tribe.go b/internal/bundb/internal/model/tribe.go index ce57010..09f8ccc 100644 --- a/internal/bundb/internal/model/tribe.go +++ b/internal/bundb/internal/model/tribe.go @@ -47,21 +47,19 @@ func NewTribe(p domain.CreateTribeParams) Tribe { func (t Tribe) ToDomain() domain.Tribe { return domain.Tribe{ - BaseTribe: domain.BaseTribe{ - OpponentsDefeated: domain.OpponentsDefeated(t.OpponentsDefeated), - ID: t.ID, - Name: t.Name, - Tag: t.Tag, - NumVillages: t.NumVillages, - NumMembers: t.NumMembers, - Points: t.Points, - AllPoints: t.AllPoints, - Rank: t.Rank, - ProfileURL: t.ProfileURL, - }, - ServerKey: t.ServerKey, - Dominance: t.Dominance, - CreatedAt: t.CreatedAt, - DeletedAt: t.DeletedAt, + OpponentsDefeated: domain.OpponentsDefeated(t.OpponentsDefeated), + ID: t.ID, + Name: t.Name, + Tag: t.Tag, + NumVillages: t.NumVillages, + NumMembers: t.NumMembers, + Points: t.Points, + AllPoints: t.AllPoints, + Rank: t.Rank, + ProfileURL: t.ProfileURL, + ServerKey: t.ServerKey, + Dominance: t.Dominance, + CreatedAt: t.CreatedAt, + DeletedAt: t.DeletedAt, } } diff --git a/internal/bundb/internal/model/village.go b/internal/bundb/internal/model/village.go index b5bd3ae..270a6b2 100644 --- a/internal/bundb/internal/model/village.go +++ b/internal/bundb/internal/model/village.go @@ -49,19 +49,17 @@ func (v Village) ToDomain() domain.Village { } } return domain.Village{ - BaseVillage: domain.BaseVillage{ - ID: v.ID, - Name: v.Name, - Points: v.Points, - X: v.X, - Y: v.Y, - Continent: v.Continent, - Bonus: v.Bonus, - PlayerID: v.PlayerID, - ProfileURL: v.ProfileURL, - }, - ServerKey: v.ServerKey, - Player: player, - CreatedAt: v.CreatedAt, + ID: v.ID, + Name: v.Name, + Points: v.Points, + X: v.X, + Y: v.Y, + Continent: v.Continent, + Bonus: v.Bonus, + PlayerID: v.PlayerID, + ProfileURL: v.ProfileURL, + ServerKey: v.ServerKey, + Player: player, + CreatedAt: v.CreatedAt, } } diff --git a/internal/service/ennoblement.go b/internal/service/ennoblement.go index fe6bd70..b079558 100644 --- a/internal/service/ennoblement.go +++ b/internal/service/ennoblement.go @@ -89,10 +89,11 @@ func (e *Ennoblement) Refresh(ctx context.Context, key, url string) error { OldOwnerID: ennoblement.OldOwnerID, OldTribeID: ennoblement.OldTribeID, Points: ennoblement.Points, + CreatedAt: ennoblement.CreatedAt, ServerKey: key, }) } - if err := e.repo.Create(ctx, params...); err != nil { + if err = e.repo.Create(ctx, params...); err != nil { span.RecordError(err) span.SetStatus(codes.Error, err.Error()) return fmt.Errorf("EnnoblementRepository.Create: %w", err) diff --git a/internal/service/tribe.go b/internal/service/tribe.go index 13d91e5..44e5cca 100644 --- a/internal/service/tribe.go +++ b/internal/service/tribe.go @@ -86,8 +86,17 @@ func (t *Tribe) createOrUpdate(ctx context.Context, key string, tribes []tw.Trib params := make([]domain.CreateTribeParams, 0, len(chunk)) for _, tribe := range chunk { params = append(params, domain.CreateTribeParams{ - BaseTribe: tribe, - ServerKey: key, + OpponentsDefeated: domain.OpponentsDefeated(tribe.OpponentsDefeated), + ID: tribe.ID, + Name: tribe.Name, + Tag: tribe.Tag, + NumMembers: tribe.NumMembers, + NumVillages: tribe.NumVillages, + Points: tribe.Points, + AllPoints: tribe.AllPoints, + Rank: tribe.Rank, + ProfileURL: tribe.ProfileURL, + ServerKey: key, }) } if err := t.repo.CreateOrUpdate(ctx, params...); err != nil { @@ -100,7 +109,7 @@ func (t *Tribe) createOrUpdate(ctx context.Context, key string, tribes []tw.Trib return nil } -func (t *Tribe) delete(ctx context.Context, key string, existing []domain.BaseTribe) error { +func (t *Tribe) delete(ctx context.Context, key string, existing []tw.Tribe) error { ctx, span := tracer.Start(ctx, "Tribe.delete", trace.WithAttributes( attribute.String("server.key", key), )) diff --git a/internal/service/tribe_test.go b/internal/service/tribe_test.go index c97eaf0..2266bf1 100644 --- a/internal/service/tribe_test.go +++ b/internal/service/tribe_test.go @@ -6,6 +6,7 @@ import ( "testing" "time" + "gitea.dwysokinski.me/twhelp/core/internal/tw" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" @@ -23,9 +24,9 @@ func TestTribe_Refresh(t *testing.T) { serverKey, serverUrl := "pl169", "https://pl169.plemiona.pl" - tribes := []domain.BaseTribe{ + tribes := []tw.Tribe{ { - OpponentsDefeated: domain.OpponentsDefeated{ + OpponentsDefeated: tw.OpponentsDefeated{ RankAtt: 8, ScoreAtt: 7, RankDef: 6, @@ -46,7 +47,7 @@ func TestTribe_Refresh(t *testing.T) { ProfileURL: "profile-998", }, { - OpponentsDefeated: domain.OpponentsDefeated{ + OpponentsDefeated: tw.OpponentsDefeated{ RankAtt: 1, ScoreAtt: 2, RankDef: 3, @@ -72,36 +73,43 @@ func TestTribe_Refresh(t *testing.T) { existingTribes := []domain.Tribe{ { - BaseTribe: domain.BaseTribe{ - OpponentsDefeated: domain.OpponentsDefeated{ - RankAtt: 8, - ScoreAtt: 7, - RankDef: 6, - ScoreDef: 5, - RankSup: 4, - ScoreSup: 3, - RankTotal: 2, - ScoreTotal: 1, - }, - ID: 997, - Name: "name 997", - Tag: "tag 997", - NumMembers: 6, - NumVillages: 5, - Points: 4, - AllPoints: 3, - Rank: 2, - ProfileURL: "profile-997", + OpponentsDefeated: domain.OpponentsDefeated{ + RankAtt: 8, + ScoreAtt: 7, + RankDef: 6, + ScoreDef: 5, + RankSup: 4, + ScoreSup: 3, + RankTotal: 2, + ScoreTotal: 1, }, - ServerKey: serverKey, - Dominance: 12.5, - CreatedAt: time.Now(), + ID: 997, + Name: "name 997", + Tag: "tag 997", + NumMembers: 6, + NumVillages: 5, + Points: 4, + AllPoints: 3, + Rank: 2, + ProfileURL: "profile-997", + ServerKey: serverKey, + Dominance: 12.5, + CreatedAt: time.Now(), }, { - BaseTribe: tribes[0], - ServerKey: serverKey, - Dominance: 11.5, - CreatedAt: time.Now(), + OpponentsDefeated: domain.OpponentsDefeated(tribes[0].OpponentsDefeated), + ID: tribes[0].ID, + Name: tribes[0].Name, + Tag: tribes[0].Tag, + NumMembers: tribes[0].NumMembers, + NumVillages: tribes[0].NumVillages, + Points: tribes[0].Points, + AllPoints: tribes[0].AllPoints, + Rank: tribes[0].Rank, + ProfileURL: tribes[0].ProfileURL, + ServerKey: serverKey, + Dominance: 11.5, + CreatedAt: time.Now(), }, } repo := &mock.FakeTribeRepository{} @@ -121,7 +129,16 @@ func TestTribe_Refresh(t *testing.T) { _, params := repo.CreateOrUpdateArgsForCall(0) assert.Len(t, params, len(tribes)) for i, p := range params { - assert.Equal(t, tribes[i], p.BaseTribe) + assert.EqualValues(t, tribes[i].OpponentsDefeated, p.OpponentsDefeated) + assert.Equal(t, tribes[i].ID, p.ID) + assert.Equal(t, tribes[i].Name, p.Name) + assert.Equal(t, tribes[i].Tag, p.Tag) + assert.Equal(t, tribes[i].NumMembers, p.NumMembers) + assert.Equal(t, tribes[i].NumVillages, p.NumVillages) + assert.Equal(t, tribes[i].Points, p.Points) + assert.Equal(t, tribes[i].AllPoints, p.AllPoints) + assert.Equal(t, tribes[i].Rank, p.Rank) + assert.Equal(t, tribes[i].ProfileURL, p.ProfileURL) assert.Equal(t, serverKey, p.ServerKey) } @@ -322,9 +339,7 @@ func TestTribe_GetByServerKeyAndID(t *testing.T) { t.Parallel() tribe := domain.Tribe{ - BaseTribe: domain.BaseTribe{ - ID: 123, - }, + ID: 123, ServerKey: "pl151", } repo := &mock.FakeTribeRepository{} @@ -368,10 +383,8 @@ func TestTribe_GetByServerKeyAndTag(t *testing.T) { t.Parallel() tribe := domain.Tribe{ - BaseTribe: domain.BaseTribe{ - ID: 123, - Tag: "taggg", - }, + ID: 123, + Tag: "taggg", ServerKey: "pl151", } repo := &mock.FakeTribeRepository{} diff --git a/internal/service/village.go b/internal/service/village.go index 3bc75f9..5715353 100644 --- a/internal/service/village.go +++ b/internal/service/village.go @@ -64,8 +64,16 @@ func (v *Village) Refresh(ctx context.Context, key, url string) (domain.RefreshV params := make([]domain.CreateVillageParams, 0, len(chunk)) for _, village := range chunk { params = append(params, domain.CreateVillageParams{ - BaseVillage: village, - ServerKey: key, + ID: village.ID, + Name: village.Name, + Points: village.Points, + X: village.X, + Y: village.Y, + Continent: village.Continent, + Bonus: village.Bonus, + PlayerID: village.PlayerID, + ProfileURL: village.ProfileURL, + ServerKey: key, }) if village.PlayerID > 0 { diff --git a/internal/service/village_test.go b/internal/service/village_test.go index 4db507f..784d135 100644 --- a/internal/service/village_test.go +++ b/internal/service/village_test.go @@ -5,6 +5,7 @@ import ( "fmt" "testing" + "gitea.dwysokinski.me/twhelp/core/internal/tw" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" @@ -19,7 +20,7 @@ import ( func TestVillage_Refresh(t *testing.T) { t.Parallel() - villages := []domain.BaseVillage{ + villages := []tw.Village{ { ID: 1, Name: "111", @@ -83,16 +84,17 @@ func TestVillage_Refresh(t *testing.T) { require.Equal(t, 1, repo.CreateOrUpdateCallCount()) _, params := repo.CreateOrUpdateArgsForCall(0) assert.Len(t, params, len(villages)) - for _, village := range villages { - var villageToCreate domain.CreateVillageParams - for _, p := range params { - if p.ID == village.ID { - villageToCreate = p - break - } - } - assert.Equal(t, village, villageToCreate.BaseVillage) - assert.Equal(t, serverKey, villageToCreate.ServerKey) + for i, village := range villages { + assert.Equal(t, village.ID, params[i].ID) + assert.Equal(t, village.Name, params[i].Name) + assert.Equal(t, village.ProfileURL, params[i].ProfileURL) + assert.Equal(t, village.X, params[i].X) + assert.Equal(t, village.Y, params[i].Y) + assert.Equal(t, village.Points, params[i].Points) + assert.Equal(t, village.Continent, params[i].Continent) + assert.Equal(t, village.Bonus, params[i].Bonus) + assert.Equal(t, village.PlayerID, params[i].PlayerID) + assert.Equal(t, serverKey, params[i].ServerKey) } } @@ -235,23 +237,17 @@ func TestVillage_GetByServerKeyAndID(t *testing.T) { t.Parallel() player := domain.Village{ - BaseVillage: domain.BaseVillage{ - ID: 123, - PlayerID: 123, - }, + ID: 123, + PlayerID: 123, Player: domain.NullPlayer{ Valid: true, Player: domain.Player{ - BasePlayer: domain.BasePlayer{ - ID: 123, - TribeID: 1234, - }, + ID: 123, + TribeID: 1234, Tribe: domain.NullTribe{ Valid: true, Tribe: domain.Tribe{ - BaseTribe: domain.BaseTribe{ - ID: 1234, - }, + ID: 1234, }, }, },