Yimaru-BackEnd/internal/repository/direct_deposit.go

63 lines
2.0 KiB
Go

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
}