88 lines
2.2 KiB
Go
88 lines
2.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/ports"
|
|
)
|
|
|
|
// Interface for creating new bonus store
|
|
func NewBonusStore(s *Store) ports.BonusStore { return s }
|
|
|
|
func (s *Store) CreateUserBonus(ctx context.Context, bonus domain.CreateBonus) (domain.UserBonus, error) {
|
|
newBonus, err := s.queries.CreateUserBonus(ctx, domain.ConvertCreateBonus(bonus))
|
|
|
|
if err != nil {
|
|
return domain.UserBonus{}, err
|
|
}
|
|
|
|
return domain.ConvertDBBonus(newBonus), nil
|
|
}
|
|
|
|
func (s *Store) GetAllUserBonuses(ctx context.Context, filter domain.BonusFilter) ([]domain.UserBonus, error) {
|
|
bonuses, err := s.queries.GetAllUserBonuses(ctx, dbgen.GetAllUserBonusesParams{
|
|
UserID: filter.UserID.ToPG(),
|
|
Offset: filter.Offset.ToPG(),
|
|
Limit: filter.Limit.ToPG(),
|
|
})
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return domain.ConvertDBBonuses(bonuses), nil
|
|
}
|
|
|
|
func (s *Store) GetBonusCount(ctx context.Context, filter domain.BonusFilter) (int64, error) {
|
|
count, err := s.queries.GetBonusCount(ctx, filter.UserID.ToPG())
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return count, nil
|
|
}
|
|
|
|
func (s *Store) GetBonusByID(ctx context.Context, bonusID int64) (domain.UserBonus, error) {
|
|
bonus, err := s.queries.GetUserBonusByID(ctx, bonusID)
|
|
if err != nil {
|
|
return domain.UserBonus{}, err
|
|
}
|
|
return domain.ConvertDBBonus(bonus), nil
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *Store) GetBonusStats(ctx context.Context, filter domain.BonusFilter) (domain.BonusStats, error) {
|
|
bonus, err := s.queries.GetBonusStats(ctx, dbgen.GetBonusStatsParams{
|
|
CompanyID: filter.CompanyID.ToPG(),
|
|
UserID: filter.UserID.ToPG(),
|
|
})
|
|
if err != nil {
|
|
return domain.BonusStats{}, err
|
|
}
|
|
return domain.ConvertDBBonusStats(bonus), nil
|
|
}
|
|
|
|
func (s *Store) UpdateUserBonus(ctx context.Context, bonusID int64, IsClaimed bool) (error) {
|
|
err := s.queries.UpdateUserBonus(ctx, dbgen.UpdateUserBonusParams{
|
|
ID: bonusID,
|
|
IsClaimed: IsClaimed,
|
|
})
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
|
|
func (s *Store) DeleteUserBonus(ctx context.Context, bonusID int64) (error) {
|
|
err := s.queries.DeleteUserBonus(ctx, bonusID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|