package repository import ( "context" "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" "github.com/SamuelTariku/FortuneBet-Backend/internal/ports" ) // Interface for creating new wallet store func NewDirectDepositStore(s *Store) ports.DirectDepositStore { return s } func (s *Store) CreateDirectDeposit(ctx context.Context, deposit domain.CreateDirectDeposit) (domain.DirectDeposit, error) { newDeposit, err := s.queries.CreateDirectDeposit(ctx, domain.ConvertCreateDirectDeposit(deposit)) if err != nil { return domain.DirectDeposit{}, err } return domain.ConvertDBDirectDeposit(newDeposit), nil } func (s *Store) GetDirectDeposit(ctx context.Context, id int64) (domain.DirectDeposit, error) { deposit, err := s.queries.GetDirectDeposit(ctx, id) if err != nil { return domain.DirectDeposit{}, err } return domain.ConvertDBDirectDeposit(deposit), nil } func (s *Store) UpdateDirectDeposit(ctx context.Context, deposit domain.UpdateDirectDeposit) (domain.DirectDeposit, error) { updatedDeposit, err := s.queries.UpdateDirectDeposit(ctx, domain.ConvertUpdateDirectDeposit(deposit)) if err != nil { return domain.DirectDeposit{}, err } return domain.ConvertDBDirectDeposit(updatedDeposit), nil } func (s *Store) GetDirectDepositsByStatus(ctx context.Context, status domain.DirectDepositStatus) ([]domain.DirectDeposit, error) { deposits, err := s.queries.GetDirectDepositsByStatus(ctx, string(status)) if err != nil { return nil, err } result := make([]domain.DirectDeposit, 0, len(deposits)) for _, deposit := range deposits { result = append(result, domain.ConvertDBDirectDeposit(deposit)) } return result, nil } func (s *Store) GetCustomerDirectDeposits(ctx context.Context, customerID int64) ([]domain.DirectDeposit, error) { deposits, err := s.queries.GetCustomerDirectDeposits(ctx, customerID) if err != nil { return nil, err } result := make([]domain.DirectDeposit, 0, len(deposits)) for _, deposit := range deposits { result = append(result, domain.ConvertDBDirectDeposit(deposit)) } return result, nil }