refactor: base models

This commit is contained in:
Dawid Wysokiński 2022-10-19 08:54:09 +02:00
parent 9dfb705323
commit 9cae454fb4
Signed by: Kichiyaki
GPG Key ID: B5445E357FB8B892
10 changed files with 153 additions and 136 deletions

View File

@ -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,
}
}

View File

@ -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)

View File

@ -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,
}
}

View File

@ -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,
}
}

View File

@ -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,
}
}

View File

@ -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)

View File

@ -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),
))

View File

@ -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{}

View File

@ -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 {

View File

@ -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,
},
},
},