142 lines
4.2 KiB
Go
142 lines
4.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
func (s *Store) CreateEnetpulseSport(ctx context.Context, sport domain.CreateEnetpulseSport) (domain.EnetpulseSport, error) {
|
|
// Convert domain model to DB model if needed
|
|
dbSport, err := s.queries.CreateEnetpulseSport(ctx, ConvertCreateEnetpulseSport(sport))
|
|
if err != nil {
|
|
return domain.EnetpulseSport{}, err
|
|
}
|
|
return ConvertDBEnetpulseSport(dbSport), nil
|
|
}
|
|
|
|
// Fetch all sports
|
|
func (s *Store) GetAllEnetpulseSports(ctx context.Context) ([]domain.EnetpulseSport, error) {
|
|
dbSports, err := s.queries.GetAllEnetpulseSports(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var sports []domain.EnetpulseSport
|
|
for _, dbSport := range dbSports {
|
|
sports = append(sports, ConvertDBEnetpulseSport(dbSport))
|
|
}
|
|
|
|
return sports, nil
|
|
}
|
|
|
|
func (s *Store) CreateEnetpulseTournamentTemplate(
|
|
ctx context.Context,
|
|
template domain.CreateEnetpulseTournamentTemplate,
|
|
) (domain.EnetpulseTournamentTemplate, error) {
|
|
// Convert domain model to DB model if needed
|
|
dbTemplate, err := s.queries.CreateEnetpulseTournamentTemplate(
|
|
ctx,
|
|
ConvertCreateEnetpulseTournamentTemplate(template),
|
|
)
|
|
if err != nil {
|
|
return domain.EnetpulseTournamentTemplate{}, err
|
|
}
|
|
return ConvertDBEnetpulseTournamentTemplate(dbTemplate), nil
|
|
}
|
|
|
|
// Fetch all tournament templates
|
|
func (s *Store) GetAllEnetpulseTournamentTemplates(ctx context.Context) ([]domain.EnetpulseTournamentTemplate, error) {
|
|
dbTemplates, err := s.queries.GetAllEnetpulseTournamentTemplates(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var templates []domain.EnetpulseTournamentTemplate
|
|
for _, dbTemplate := range dbTemplates {
|
|
templates = append(templates, ConvertDBEnetpulseTournamentTemplate(dbTemplate))
|
|
}
|
|
|
|
return templates, nil
|
|
}
|
|
|
|
func ConvertCreateEnetpulseSport(s domain.CreateEnetpulseSport) dbgen.CreateEnetpulseSportParams {
|
|
return dbgen.CreateEnetpulseSportParams{
|
|
SportID: s.SportID,
|
|
Name: s.Name,
|
|
UpdatesCount: pgtype.Int4{Int32: int32(s.UpdatesCount), Valid: true}, // SQLC might use int32
|
|
LastUpdatedAt: pgtype.Timestamptz{Time: s.LastUpdatedAt, Valid: true},
|
|
Status: pgtype.Int4{Int32: int32(s.Status), Valid: true},
|
|
// UpdatedAt: nil, // SQLC will default NOW() if nil
|
|
}
|
|
}
|
|
|
|
func ConvertDBEnetpulseSport(db dbgen.EnetpulseSport) domain.EnetpulseSport {
|
|
return domain.EnetpulseSport{
|
|
ID: db.ID,
|
|
SportID: db.SportID,
|
|
Name: db.Name,
|
|
UpdatesCount: func() int {
|
|
if db.UpdatesCount.Valid {
|
|
return int(db.UpdatesCount.Int32)
|
|
}
|
|
return 0 // or another default value if needed
|
|
}(), // cast from int32
|
|
LastUpdatedAt: db.LastUpdatedAt.Time,
|
|
Status: func() int {
|
|
if db.Status.Valid {
|
|
return int(db.Status.Int32)
|
|
}
|
|
return 0 // or another default value if needed
|
|
}(), // cast from int32
|
|
CreatedAt: db.CreatedAt.Time,
|
|
UpdatedAt: db.UpdatedAt.Time,
|
|
}
|
|
}
|
|
|
|
func ConvertDBEnetpulseTournamentTemplate(db dbgen.EnetpulseTournamentTemplate) domain.EnetpulseTournamentTemplate {
|
|
return domain.EnetpulseTournamentTemplate{
|
|
ID: db.ID,
|
|
TemplateID: db.TemplateID,
|
|
Name: db.Name,
|
|
SportFK: db.SportFk,
|
|
Gender: func() string {
|
|
if db.Gender.Valid {
|
|
return db.Gender.String
|
|
}
|
|
return ""
|
|
}(),
|
|
UpdatesCount: func() int {
|
|
if db.UpdatesCount.Valid {
|
|
return int(db.UpdatesCount.Int32)
|
|
}
|
|
return 0
|
|
}(),
|
|
LastUpdatedAt: db.LastUpdatedAt.Time,
|
|
Status: func() int {
|
|
if db.Status.Valid {
|
|
return int(db.Status.Int32)
|
|
}
|
|
return 0
|
|
}(),
|
|
CreatedAt: db.CreatedAt.Time,
|
|
UpdatedAt: db.UpdatedAt.Time,
|
|
}
|
|
}
|
|
|
|
func ConvertCreateEnetpulseTournamentTemplate(
|
|
t domain.CreateEnetpulseTournamentTemplate,
|
|
) dbgen.CreateEnetpulseTournamentTemplateParams {
|
|
return dbgen.CreateEnetpulseTournamentTemplateParams{
|
|
TemplateID: t.TemplateID,
|
|
SportFk: fmt.Sprintf("%d", t.SportFK),
|
|
Gender: pgtype.Text{String: t.Gender, Valid: t.Gender != ""},
|
|
UpdatesCount: pgtype.Int4{Int32: int32(t.UpdatesCount), Valid: true},
|
|
LastUpdatedAt: pgtype.Timestamptz{Time: t.LastUpdatedAt, Valid: true},
|
|
Status: pgtype.Int4{Int32: int32(t.Status), Valid: true},
|
|
}
|
|
}
|