Files
spend-sparrow/types/transaction.go
Tim Wundenberg 0c85aa0880
Some checks failed
Build Docker Image / Build-Docker-Image (push) Failing after 4m58s
feat(transaction): #66 fix inputs
2025-05-16 09:48:22 +02:00

44 lines
1.2 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
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
}