63 lines
2.0 KiB
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
|
|
}
|