package repository import ( "context" dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db" "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" "github.com/jackc/pgx/v5/pgtype" ) func convertDBBet(bet dbgen.Bet) domain.Bet { return domain.Bet{ ID: bet.ID, Amount: domain.Currency(bet.Amount), TotalOdds: bet.TotalOdds, Status: domain.BetStatus(bet.Status), FullName: bet.FullName, PhoneNumber: bet.PhoneNumber, BranchID: domain.ValidInt64{ Value: bet.BranchID.Int64, Valid: bet.BranchID.Valid, }, UserID: domain.ValidInt64{ Value: bet.UserID.Int64, Valid: bet.UserID.Valid, }, IsShopBet: bet.IsShopBet, } } func convertCreateBet(bet domain.CreateBet) dbgen.CreateBetParams { return dbgen.CreateBetParams{ Amount: int64(bet.Amount), TotalOdds: bet.TotalOdds, Status: int32(bet.Status), FullName: bet.FullName, PhoneNumber: bet.PhoneNumber, BranchID: pgtype.Int8{ Int64: bet.BranchID.Value, Valid: bet.BranchID.Valid, }, UserID: pgtype.Int8{ Int64: bet.UserID.Value, Valid: bet.UserID.Valid, }, IsShopBet: bet.IsShopBet, } } func (s *Store) CreateBet(ctx context.Context, bet domain.CreateBet) (domain.Bet, error) { newBet, err := s.queries.CreateBet(ctx, convertCreateBet(bet)) if err != nil { return domain.Bet{}, err } return convertDBBet(newBet), err } func (s *Store) GetBetByID(ctx context.Context, id int64) (domain.Bet, error) { bet, err := s.queries.GetBetByID(ctx, id) if err != nil { return domain.Bet{}, err } return convertDBBet(bet), nil } func (s *Store) GetAllBets(ctx context.Context) ([]domain.Bet, error) { bets, err := s.queries.GetAllBets(ctx) if err != nil { return nil, err } var result []domain.Bet for _, bet := range bets { result = append(result, convertDBBet(bet)) } return result, nil } func (s *Store) UpdateCashOut(ctx context.Context, id int64, cashedOut bool) error { err := s.queries.UpdateCashOut(ctx, dbgen.UpdateCashOutParams{ ID: id, CashedOut: pgtype.Bool{ Bool: cashedOut, }, }) return err } func (s *Store) DeleteBet(ctx context.Context, id int64) error { return s.queries.DeleteBet(ctx, id) }