transaction

package
v0.0.0-...-c35a37d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2026 License: AGPL-3.0 Imports: 8 Imported by: 0

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL