This commit is contained in:
parent
ed51e5999b
commit
c8eb38d689
|
@ -5,8 +5,11 @@ import (
|
|||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"github.com/uptrace/bun"
|
||||
"go.opentelemetry.io/otel"
|
||||
)
|
||||
|
||||
var tracer = otel.Tracer("gitea.dwysokinski.me/twhelp/core/internal/bundb")
|
||||
|
||||
func appendODSetClauses(q *bun.InsertQuery) *bun.InsertQuery {
|
||||
return q.Set("rank_att = EXCLUDED.rank_att").
|
||||
Set("score_att = EXCLUDED.score_att").
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"github.com/uptrace/bun"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
)
|
||||
|
||||
type Ennoblement struct {
|
||||
|
@ -20,6 +21,9 @@ func NewEnnoblement(db *bun.DB) *Ennoblement {
|
|||
}
|
||||
|
||||
func (e *Ennoblement) Create(ctx context.Context, params ...domain.CreateEnnoblementParams) error {
|
||||
ctx, span := tracer.Start(ctx, "Ennoblement.Create")
|
||||
defer span.End()
|
||||
|
||||
if len(params) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -32,6 +36,8 @@ func (e *Ennoblement) Create(ctx context.Context, params ...domain.CreateEnnoble
|
|||
Model(&ennoblements).
|
||||
Returning("NULL").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("something went wrong while inserting ennoblements into db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -39,6 +45,9 @@ func (e *Ennoblement) Create(ctx context.Context, params ...domain.CreateEnnoble
|
|||
}
|
||||
|
||||
func (e *Ennoblement) List(ctx context.Context, params domain.ListEnnoblementsParams) ([]domain.Ennoblement, int64, error) {
|
||||
ctx, span := tracer.Start(ctx, "Ennoblement.List")
|
||||
defer span.End()
|
||||
|
||||
var ennoblements []model.Ennoblement
|
||||
var count int
|
||||
var err error
|
||||
|
@ -49,6 +58,8 @@ func (e *Ennoblement) List(ctx context.Context, params domain.ListEnnoblementsPa
|
|||
|
||||
q, err = listEnnoblementsParamsApplier{params}.apply(q)
|
||||
if err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("listEnnoblementsParamsApplier.apply: %w", err)
|
||||
}
|
||||
|
||||
|
@ -58,6 +69,8 @@ func (e *Ennoblement) List(ctx context.Context, params domain.ListEnnoblementsPa
|
|||
err = q.Scan(ctx)
|
||||
}
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("couldn't select ennoblements from the db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -65,6 +78,7 @@ func (e *Ennoblement) List(ctx context.Context, params domain.ListEnnoblementsPa
|
|||
for _, ennoblement := range ennoblements {
|
||||
result = append(result, ennoblement.ToDomain())
|
||||
}
|
||||
|
||||
return result, int64(count), nil
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"time"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"github.com/uptrace/bun"
|
||||
|
@ -22,6 +23,9 @@ func NewPlayer(db *bun.DB) *Player {
|
|||
}
|
||||
|
||||
func (p *Player) CreateOrUpdate(ctx context.Context, params ...domain.CreatePlayerParams) error {
|
||||
ctx, span := tracer.Start(ctx, "Player.CreateOrUpdate")
|
||||
defer span.End()
|
||||
|
||||
if len(params) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -42,6 +46,8 @@ func (p *Player) CreateOrUpdate(ctx context.Context, params ...domain.CreatePlay
|
|||
Apply(appendODSetClauses).
|
||||
Returning("NULL").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("something went wrong while inserting players into db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -49,6 +55,9 @@ func (p *Player) CreateOrUpdate(ctx context.Context, params ...domain.CreatePlay
|
|||
}
|
||||
|
||||
func (p *Player) DeleteByID(ctx context.Context, ids ...int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Player.DeleteByID")
|
||||
defer span.End()
|
||||
|
||||
if len(ids) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -61,6 +70,8 @@ func (p *Player) DeleteByID(ctx context.Context, ids ...int64) error {
|
|||
Set("tribe_id = NULL").
|
||||
Returning("NULL").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("couldn't delete players: %w", err)
|
||||
}
|
||||
|
||||
|
@ -68,6 +79,9 @@ func (p *Player) DeleteByID(ctx context.Context, ids ...int64) error {
|
|||
}
|
||||
|
||||
func (p *Player) List(ctx context.Context, params domain.ListPlayersParams) ([]domain.Player, int64, error) {
|
||||
ctx, span := tracer.Start(ctx, "Player.List")
|
||||
defer span.End()
|
||||
|
||||
var players []model.Player
|
||||
var count int
|
||||
var err error
|
||||
|
@ -78,6 +92,8 @@ func (p *Player) List(ctx context.Context, params domain.ListPlayersParams) ([]d
|
|||
|
||||
q, err = listPlayersParamsApplier{params}.apply(q)
|
||||
if err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("listPlayersParamsApplier.apply: %w", err)
|
||||
}
|
||||
|
||||
|
@ -87,6 +103,8 @@ func (p *Player) List(ctx context.Context, params domain.ListPlayersParams) ([]d
|
|||
err = q.Scan(ctx)
|
||||
}
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("couldn't select players from the db: %w", err)
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ import (
|
|||
"time"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"github.com/uptrace/bun"
|
||||
|
@ -22,6 +25,9 @@ func NewServer(db *bun.DB) *Server {
|
|||
}
|
||||
|
||||
func (s *Server) CreateOrUpdate(ctx context.Context, params ...domain.CreateServerParams) ([]domain.Server, error) {
|
||||
ctx, span := tracer.Start(ctx, "Server.CreateOrUpdate")
|
||||
defer span.End()
|
||||
|
||||
if len(params) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
@ -45,6 +51,8 @@ func (s *Server) CreateOrUpdate(ctx context.Context, params ...domain.CreateServ
|
|||
Set("open = EXCLUDED.open").
|
||||
Returning("*").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, fmt.Errorf("something went wrong while inserting servers into db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -52,10 +60,14 @@ func (s *Server) CreateOrUpdate(ctx context.Context, params ...domain.CreateServ
|
|||
for _, srv := range servers {
|
||||
result = append(result, srv.ToDomain())
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (s *Server) List(ctx context.Context, params domain.ListServersParams) ([]domain.Server, int64, error) {
|
||||
ctx, span := tracer.Start(ctx, "Server.List")
|
||||
defer span.End()
|
||||
|
||||
var servers []model.Server
|
||||
var count int
|
||||
var err error
|
||||
|
@ -70,6 +82,8 @@ func (s *Server) List(ctx context.Context, params domain.ListServersParams) ([]d
|
|||
err = q.Scan(ctx)
|
||||
}
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("couldn't select servers from the db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -77,11 +91,19 @@ func (s *Server) List(ctx context.Context, params domain.ListServersParams) ([]d
|
|||
for _, server := range servers {
|
||||
result = append(result, server.ToDomain())
|
||||
}
|
||||
|
||||
return result, int64(count), nil
|
||||
}
|
||||
|
||||
func (s *Server) UpdateByKey(ctx context.Context, key string, params domain.UpdateServerParams) (domain.Server, error) {
|
||||
ctx, span := tracer.Start(ctx, "Server.UpdateByKey", trace.WithAttributes(
|
||||
attribute.String("server.key", key),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
if params.IsZero() {
|
||||
span.RecordError(domain.ErrNothingToUpdate)
|
||||
span.SetStatus(codes.Error, domain.ErrNothingToUpdate.Error())
|
||||
return domain.Server{}, domain.ErrNothingToUpdate
|
||||
}
|
||||
|
||||
|
@ -94,6 +116,8 @@ func (s *Server) UpdateByKey(ctx context.Context, key string, params domain.Upda
|
|||
Returning("*").
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return domain.Server{}, fmt.Errorf("couldn't update server (key=%s): %w", key, err)
|
||||
}
|
||||
if affected, _ := res.RowsAffected(); affected == 0 {
|
||||
|
|
|
@ -8,6 +8,9 @@ import (
|
|||
"time"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"github.com/uptrace/bun"
|
||||
|
@ -22,6 +25,9 @@ func NewTribe(db *bun.DB) *Tribe {
|
|||
}
|
||||
|
||||
func (t *Tribe) CreateOrUpdate(ctx context.Context, params ...domain.CreateTribeParams) error {
|
||||
ctx, span := tracer.Start(ctx, "Tribe.CreateOrUpdate")
|
||||
defer span.End()
|
||||
|
||||
if len(params) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -44,6 +50,8 @@ func (t *Tribe) CreateOrUpdate(ctx context.Context, params ...domain.CreateTribe
|
|||
Apply(appendODSetClauses).
|
||||
Returning("NULL").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("something went wrong while inserting tribes into db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -51,6 +59,9 @@ func (t *Tribe) CreateOrUpdate(ctx context.Context, params ...domain.CreateTribe
|
|||
}
|
||||
|
||||
func (t *Tribe) DeleteByID(ctx context.Context, ids ...int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Tribe.DeleteByID")
|
||||
defer span.End()
|
||||
|
||||
if len(ids) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -62,6 +73,8 @@ func (t *Tribe) DeleteByID(ctx context.Context, ids ...int64) error {
|
|||
Set("deleted_at = ?", time.Now()).
|
||||
Returning("NULL").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("couldn't delete tribes: %w", err)
|
||||
}
|
||||
|
||||
|
@ -69,6 +82,12 @@ func (t *Tribe) DeleteByID(ctx context.Context, ids ...int64) error {
|
|||
}
|
||||
|
||||
func (t *Tribe) UpdateDominance(ctx context.Context, serverKey string, numPlayerVillages int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Tribe.UpdateDominance", trace.WithAttributes(
|
||||
attribute.String("server.key", serverKey),
|
||||
attribute.Int64("server.num_player_villages", numPlayerVillages),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
q := t.db.NewUpdate().
|
||||
Model(&model.Tribe{}).
|
||||
Returning("NULL").
|
||||
|
@ -80,6 +99,8 @@ func (t *Tribe) UpdateDominance(ctx context.Context, serverKey string, numPlayer
|
|||
q = q.Set("dominance = 0")
|
||||
}
|
||||
if _, err := q.Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("couldn't update dominance (server=%s): %w", serverKey, err)
|
||||
}
|
||||
|
||||
|
@ -87,6 +108,9 @@ func (t *Tribe) UpdateDominance(ctx context.Context, serverKey string, numPlayer
|
|||
}
|
||||
|
||||
func (t *Tribe) List(ctx context.Context, params domain.ListTribesParams) ([]domain.Tribe, int64, error) {
|
||||
ctx, span := tracer.Start(ctx, "Tribe.List")
|
||||
defer span.End()
|
||||
|
||||
var tribes []model.Tribe
|
||||
var count int
|
||||
var err error
|
||||
|
@ -97,6 +121,8 @@ func (t *Tribe) List(ctx context.Context, params domain.ListTribesParams) ([]dom
|
|||
|
||||
q, err = listTribesParamsApplier{params}.apply(q)
|
||||
if err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("listTribesParamsApplier.apply: %w", err)
|
||||
}
|
||||
|
||||
|
@ -106,6 +132,8 @@ func (t *Tribe) List(ctx context.Context, params domain.ListTribesParams) ([]dom
|
|||
err = q.Scan(ctx)
|
||||
}
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("couldn't select tribes from the db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -113,6 +141,7 @@ func (t *Tribe) List(ctx context.Context, params domain.ListTribesParams) ([]dom
|
|||
for _, tribe := range tribes {
|
||||
result = append(result, tribe.ToDomain())
|
||||
}
|
||||
|
||||
return result, int64(count), nil
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ import (
|
|||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
@ -21,6 +24,9 @@ func NewVersion(db *bun.DB) *Version {
|
|||
}
|
||||
|
||||
func (v *Version) List(ctx context.Context, params domain.ListVersionsParams) ([]domain.Version, int64, error) {
|
||||
ctx, span := tracer.Start(ctx, "Version.List")
|
||||
defer span.End()
|
||||
|
||||
var versions []model.Version
|
||||
var count int
|
||||
var err error
|
||||
|
@ -34,6 +40,8 @@ func (v *Version) List(ctx context.Context, params domain.ListVersionsParams) ([
|
|||
err = q.Scan(ctx)
|
||||
}
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("couldn't select versions from the db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -41,16 +49,24 @@ func (v *Version) List(ctx context.Context, params domain.ListVersionsParams) ([
|
|||
for _, version := range versions {
|
||||
result = append(result, version.ToDomain())
|
||||
}
|
||||
|
||||
return result, int64(count), nil
|
||||
}
|
||||
|
||||
func (v *Version) GetByCode(ctx context.Context, code string) (domain.Version, error) {
|
||||
ctx, span := tracer.Start(ctx, "Version.GetByCode", trace.WithAttributes(
|
||||
attribute.String("version.code", code),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
var version model.Version
|
||||
|
||||
if err := v.db.NewSelect().
|
||||
Model(&version).
|
||||
Where("code = ?", code).
|
||||
Scan(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return domain.Version{}, domain.VersionNotFoundError{VerCode: code}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
||||
"github.com/uptrace/bun"
|
||||
|
@ -21,6 +22,9 @@ func NewVillage(db *bun.DB) *Village {
|
|||
}
|
||||
|
||||
func (v *Village) CreateOrUpdate(ctx context.Context, params ...domain.CreateVillageParams) error {
|
||||
ctx, span := tracer.Start(ctx, "Village.CreateOrUpdate")
|
||||
defer span.End()
|
||||
|
||||
if len(params) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -41,6 +45,8 @@ func (v *Village) CreateOrUpdate(ctx context.Context, params ...domain.CreateVil
|
|||
Set("player_id = EXCLUDED.player_id").
|
||||
Returning("NULL").
|
||||
Exec(ctx); err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return fmt.Errorf("something went wrong while inserting villages into db: %w", err)
|
||||
}
|
||||
|
||||
|
@ -48,6 +54,9 @@ func (v *Village) CreateOrUpdate(ctx context.Context, params ...domain.CreateVil
|
|||
}
|
||||
|
||||
func (v *Village) List(ctx context.Context, params domain.ListVillagesParams) ([]domain.Village, int64, error) {
|
||||
ctx, span := tracer.Start(ctx, "Village.List")
|
||||
defer span.End()
|
||||
|
||||
var villages []model.Village
|
||||
var count int
|
||||
var err error
|
||||
|
@ -62,6 +71,8 @@ func (v *Village) List(ctx context.Context, params domain.ListVillagesParams) ([
|
|||
err = q.Scan(ctx)
|
||||
}
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
return nil, 0, fmt.Errorf("couldn't select villages from the db: %w", err)
|
||||
}
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ func (s *Server) UpdateInfoAndConfig(ctx context.Context, key, url string) error
|
|||
func (s *Server) UpdateNumPlayers(ctx context.Context, key string, numPlayers int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Server.UpdateNumPlayers", trace.WithAttributes(
|
||||
attribute.String("server.key", key),
|
||||
attribute.Int64("num_players", numPlayers),
|
||||
attribute.Int64("server.num_players", numPlayers),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
|
@ -188,7 +188,7 @@ func (s *Server) UpdateNumPlayers(ctx context.Context, key string, numPlayers in
|
|||
func (s *Server) UpdateNumTribes(ctx context.Context, key string, numTribes int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Server.UpdateNumTribes", trace.WithAttributes(
|
||||
attribute.String("server.key", key),
|
||||
attribute.Int64("num_tribes", numTribes),
|
||||
attribute.Int64("server.num_tribes", numTribes),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
|
@ -211,7 +211,7 @@ func (s *Server) UpdateNumTribes(ctx context.Context, key string, numTribes int6
|
|||
func (s *Server) UpdateNumVillages(ctx context.Context, key string, numVillages int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Server.UpdateNumVillages", trace.WithAttributes(
|
||||
attribute.String("server.key", key),
|
||||
attribute.Int64("num_villages", numVillages),
|
||||
attribute.Int64("server.num_villages", numVillages),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ func (t *Tribe) delete(ctx context.Context, key string, existing []domain.BaseTr
|
|||
func (t *Tribe) UpdateDominance(ctx context.Context, serverKey string, numPlayerVillages int64) error {
|
||||
ctx, span := tracer.Start(ctx, "Tribe.UpdateDominance", trace.WithAttributes(
|
||||
attribute.String("server.key", serverKey),
|
||||
attribute.Int64("num_player_villages", numPlayerVillages),
|
||||
attribute.Int64("server.num_player_villages", numPlayerVillages),
|
||||
))
|
||||
defer span.End()
|
||||
|
||||
|
|
Reference in New Issue
Block a user