Files
spend-sparrow/types/transaction.go
Tim Wundenberg 3dc9f8ec6f
All checks were successful
Build Docker Image / Build-Docker-Image (push) Successful in 5m15s
Build and Push Docker Image / Build-And-Push-Docker-Image (push) Successful in 5m29s
feat(transaction): #80 add errors to transactions
2025-05-16 17:09:13 +02:00

46 lines
1.3 KiB
Go

package types
import (
"time"
"github.com/google/uuid"
)
// At the center of the application is the transaction.
//
// Every piece of data should be calculated based on transactions.
// This means potential calculation errors can be fixed later in time.
//
// If it becomes necessary to precalculate snapshots for performance reasons, this can be done in the future.
// But the transaction should always be the source of truth.
type Transaction struct {
Id uuid.UUID
UserId uuid.UUID `db:"user_id"`
Timestamp time.Time
Note string
// account id is only nil, if the transaction is a deposit to a treasure chest
AccountId *uuid.UUID `db:"account_id"`
TreasureChestId *uuid.UUID `db:"treasure_chest_id"`
// The value of the transacion. Negative for outgoing and positive for incoming transactions.
Value int64
// If an error is present, then the transaction is not valid and should not be used for calculations.
Error *string
CreatedAt time.Time `db:"created_at"`
CreatedBy uuid.UUID `db:"created_by"`
UpdatedAt *time.Time `db:"updated_at"`
UpdatedBy *uuid.UUID `db:"updated_by"`
}
type TransactionInput struct {
Id string
AccountId string
TreasureChestId string
Value string
Timestamp string
TimezoneOffsetMinutes string
Note string
}