77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
)
|
|
|
|
func convertDBTransaction(transaction dbgen.Transaction) domain.Transaction {
|
|
return domain.Transaction{
|
|
ID: transaction.ID,
|
|
Amount: domain.Currency(transaction.Amount),
|
|
Type: domain.TransactionType(transaction.TransactionType),
|
|
Verified: transaction.Verified,
|
|
WalletID: transaction.WalletID,
|
|
}
|
|
}
|
|
|
|
func convertCreateTransaction(transaction domain.CreateTransaction) dbgen.CreateTransactionParams {
|
|
return dbgen.CreateTransactionParams{
|
|
Amount: int64(transaction.Amount),
|
|
TransactionType: string(transaction.Type),
|
|
WalletID: transaction.WalletID,
|
|
}
|
|
}
|
|
|
|
func (s *Store) CreateTransaction(ctx context.Context, transaction domain.CreateTransaction) (domain.Transaction, error) {
|
|
newTransaction, err := s.queries.CreateTransaction(ctx, convertCreateTransaction(transaction))
|
|
if err != nil {
|
|
return domain.Transaction{}, err
|
|
}
|
|
return convertDBTransaction(newTransaction), nil
|
|
}
|
|
|
|
func (s *Store) GetAllTransactions(ctx context.Context) ([]domain.Transaction, error) {
|
|
transactions, err := s.queries.GetAllTransactions(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var result []domain.Transaction
|
|
for _, transaction := range transactions {
|
|
result = append(result, convertDBTransaction(transaction))
|
|
}
|
|
return result, nil
|
|
}
|
|
func (s *Store) GetTransactionsByWallet(ctx context.Context, walletID int64) ([]domain.Transaction, error) {
|
|
transactions, err := s.queries.GetTransactionsByWallet(ctx, walletID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var result []domain.Transaction
|
|
for _, transaction := range transactions {
|
|
result = append(result, convertDBTransaction(transaction))
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
|
|
func (s *Store) GetTransactionByID(ctx context.Context, id int64) (domain.Transaction, error){
|
|
transaction, err := s.queries.GetTransactionByID(ctx, id);
|
|
if err != nil {
|
|
return domain.Transaction{}, nil
|
|
}
|
|
return convertDBTransaction(transaction), nil
|
|
}
|
|
|
|
func (s *Store) UpdateTransferVerification(ctx context.Context, id int64, verified bool) error{
|
|
err := s.queries.UpdateTransferVerification(ctx, dbgen.UpdateTransferVerificationParams{
|
|
ID: id,
|
|
Verified: verified,
|
|
})
|
|
|
|
return err
|
|
}
|