kaspad/apiserver/models/models.go
Ori Newman 7fc2430ab1 [NOD-304] Implement get transactions by address for api server (#395)
* [NOD-303] Implement get transactions by address for API server

* [NOD-304] Implement get transactions by address

* [NOD-304] Implement get transactions by address

* [NOD-304] Use structs for where if possible

* [NOD-304] Auto increment IDs

* [NOD-304] Make defaultGetTransactionsLimit constant

* [NOD-304] Delete db directory

* [NOD-304] change db var to query

* [NOD-304] Extract route handle function from addRoutes

* [NOD-304] Order transactions by ID

* [NOD-304] Add error for passing arrays to GET
2019-09-08 10:52:03 +03:00

118 lines
3.0 KiB
Go

package models
import (
"time"
)
// Block is the gorm model for the 'blocks' table
type Block struct {
ID uint64 `gorm:"primary_key"`
BlockHash string
AcceptingBlockID uint64
AcceptingBlock *Block
Version int32
HashMerkleRoot string
AcceptedIDMerkleRoot string
UTXOCommitment string
Timestamp time.Time
Bits uint32
Nonce uint64
BlueScore uint64
IsChainBlock bool
Mass uint64
ParentBlocks []Block `gorm:"many2many:parent_blocks;"`
}
// ParentBlock is the gorm model for the 'parent_blocks' table
type ParentBlock struct {
BlockID uint64
Block Block
ParentBlockID uint64
ParentBlock Block
}
// RawBlock is the gorm model for the 'raw_blocks' table
type RawBlock struct {
BlockID uint64
Block Block
BlockData []byte
}
// Subnetwork is the gorm model for the 'subnetworks' table
type Subnetwork struct {
ID uint64 `gorm:"primary_key"`
SubnetworkID string
}
// Transaction is the gorm model for the 'transactions' table
type Transaction struct {
ID uint64 `gorm:"primary_key"`
AcceptingBlockID uint64
AcceptingBlock Block
TransactionHash string
TransactionID string
LockTime uint64
SubnetworkID uint64
Subnetwork Subnetwork
Gas uint64
PayloadHash string
Payload []byte
Mass uint64
Blocks []Block `gorm:"many2many:transactions_to_blocks;"`
TransactionOutputs []TransactionOutput
TransactionInputs []TransactionInput
}
// TransactionBlock is the gorm model for the 'transactions_to_blocks' table
type TransactionBlock struct {
TransactionID uint64
Transaction Transaction
BlockID uint64
Block Block
Index uint32
}
// TableName returns the table name associated to the
// TransactionBlock gorm model
func (TransactionBlock) TableName() string {
return "transactions_to_blocks"
}
// TransactionOutput is the gorm model for the 'transaction_outputs' table
type TransactionOutput struct {
ID uint64 `gorm:"primary_key"`
TransactionID uint64
Transaction Transaction
Index uint32
Value uint64
PkScript []byte
AddressID uint64
Address Address
}
// TransactionInput is the gorm model for the 'transaction_inputs' table
type TransactionInput struct {
ID uint64 `gorm:"primary_key"`
TransactionID uint64
Transaction Transaction
TransactionOutputID uint64
TransactionOutput TransactionOutput
Index uint32
SignatureScript []byte
Sequence uint64
}
// UTXO is the gorm model for the 'utxos' table
type UTXO struct {
TransactionOutputID uint64
TransactionOutput TransactionOutput
AcceptingBlockID uint64
AcceptingBlock Block
}
// Address is the gorm model for the 'utxos' table
type Address struct {
ID uint64 `gorm:"primary_key"`
Address string
}