Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // Resource not found errors ErrTransactionNotFound = errors.New("transaction not found") // Conflict errors ErrStellarHashAlreadyExists = errors.New("stellar transaction hash already registered") ErrExternalIDAlreadyExists = errors.New("external ID already registered") // Business logic errors ErrInvalidStatusTransition = errors.New("invalid status transition") ErrCannotModifyTransaction = errors.New("cannot modify completed transaction") // Validation errors ErrInvalidInput = errors.New("invalid input") ErrInvalidTxType = errors.New("invalid transaction type") ErrInvalidAmount = errors.New("invalid amount") ErrInvalidStatus = errors.New("invalid transaction status") ErrInvalidCategory = errors.New("invalid transaction category") )
Transaction service specific errors
Functions ¶
This section is empty.
Types ¶
type CreateTransactionRequest ¶
type CreateTransactionRequest struct {
UserID *string `json:"user_id,omitempty"`
AccountID *string `json:"account_id,omitempty"`
LoanID *string `json:"loan_id,omitempty"`
TxType string `json:"tx_type" validate:"required"`
TxCategory string `json:"tx_category,omitempty"`
Amount int64 `json:"amount" validate:"required,gt=0"`
Asset string `json:"asset" validate:"required"`
StellarTxHash *string `json:"stellar_tx_hash,omitempty"`
StellarLedger *int64 `json:"stellar_ledger,omitempty"`
ContractID *string `json:"contract_id,omitempty"`
ContractFunction *string `json:"contract_function,omitempty"`
ExternalID *string `json:"external_id,omitempty"`
ExternalProvider *string `json:"external_provider,omitempty"`
Description *string `json:"description,omitempty"`
Metadata *string `json:"metadata,omitempty"`
}
CreateTransactionRequest represents the request to create a new transaction
type Service ¶
type Service interface {
// Transaction management
Create(ctx context.Context, req CreateTransactionRequest) (*TransactionResponse, error)
BatchCreate(ctx context.Context, reqs []CreateTransactionRequest) ([]*TransactionResponse, error)
GetByID(ctx context.Context, id string) (*TransactionResponse, error)
GetByStellarHash(ctx context.Context, txHash string) (*TransactionResponse, error)
GetByExternalID(ctx context.Context, externalID string) (*TransactionResponse, error)
GetByLoanID(ctx context.Context, loanID string, pagination services.Pagination) (*services.PaginatedResponse[TransactionResponse], error)
GetByUserID(ctx context.Context, userID string, pagination services.Pagination) (*services.PaginatedResponse[TransactionResponse], error)
GetByStatus(ctx context.Context, status string, pagination services.Pagination) (*services.PaginatedResponse[TransactionResponse], error)
Update(ctx context.Context, id string, req UpdateTransactionRequest) (*TransactionResponse, error)
}
Service defines the interface for transaction business logic operations
func NewService ¶
func NewService(repo repository.TransactionRepository) Service
NewService creates a new transaction service instance
type TransactionFilters ¶
type TransactionFilters struct {
UserID string `json:"user_id,omitempty"`
LoanID string `json:"loan_id,omitempty"`
Status string `json:"status,omitempty"`
TxType string `json:"tx_type,omitempty"`
}
TransactionFilters represents filters for listing transactions
type TransactionResponse ¶
type TransactionResponse struct {
ID string `json:"id"`
UserID *string `json:"user_id,omitempty"`
AccountID *string `json:"account_id,omitempty"`
LoanID *string `json:"loan_id,omitempty"`
TxType string `json:"tx_type"`
TxCategory string `json:"tx_category"`
Amount int64 `json:"amount"`
Asset string `json:"asset"`
StellarTxHash *string `json:"stellar_tx_hash,omitempty"`
StellarLedger *int64 `json:"stellar_ledger,omitempty"`
StellarStatus *string `json:"stellar_status,omitempty"`
ContractID *string `json:"contract_id,omitempty"`
ContractFunction *string `json:"contract_function,omitempty"`
ExternalID *string `json:"external_id,omitempty"`
ExternalProvider *string `json:"external_provider,omitempty"`
ExternalStatus *string `json:"external_status,omitempty"`
Description *string `json:"description,omitempty"`
Metadata *string `json:"metadata,omitempty"`
Status string `json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
TransactionResponse represents the response containing transaction information
type UpdateTransactionRequest ¶
type UpdateTransactionRequest struct {
StellarTxHash *string `json:"stellar_tx_hash,omitempty"`
StellarLedger *int64 `json:"stellar_ledger,omitempty"`
StellarStatus *string `json:"stellar_status,omitempty"`
ExternalID *string `json:"external_id,omitempty"`
ExternalProvider *string `json:"external_provider,omitempty"`
ExternalStatus *string `json:"external_status,omitempty"`
Status *string `json:"status,omitempty"`
Description *string `json:"description,omitempty"`
Metadata *string `json:"metadata,omitempty"`
}
UpdateTransactionRequest represents the request to update a transaction
Click to show internal directories.
Click to hide internal directories.