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 (s *Store) CreateBet(ctx context.Context, bet domain.Bet) (domain.Bet, error) { newBet, err := s.queries.CreateBet(ctx, 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, }, }) if err != nil { return domain.Bet{}, err } return domain.Bet{ ID: newBet.ID, Amount: domain.Currency(newBet.Amount), TotalOdds: newBet.TotalOdds, Status: domain.BetStatus(newBet.Status), FullName: newBet.FullName, PhoneNumber: newBet.PhoneNumber, BranchID: domain.ValidInt64{ Value: newBet.BranchID.Int64, Valid: newBet.BranchID.Valid, }, UserID: domain.ValidInt64{ Value: newBet.UserID.Int64, Valid: newBet.UserID.Valid, }, }, 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 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, }, }, 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, 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, }, }) } 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) }