v2 and v3 db models and batches
This commit is contained in:
parent
f78f9be5d8
commit
e227dbf182
23
statediff/indexer/models/shared/batch.go
Normal file
23
statediff/indexer/models/shared/batch.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// VulcanizeDB
|
||||||
|
// Copyright © 2021 Vulcanize
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package models
|
||||||
|
|
||||||
|
// IPLDBatch holds the arguments for a batch insert of IPLD data
|
||||||
|
type IPLDBatch struct {
|
||||||
|
Keys []string
|
||||||
|
Values [][]byte
|
||||||
|
}
|
23
statediff/indexer/models/shared/models.go
Normal file
23
statediff/indexer/models/shared/models.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// VulcanizeDB
|
||||||
|
// Copyright © 2021 Vulcanize
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package models
|
||||||
|
|
||||||
|
// IPLDModel is the db model for public.blocks
|
||||||
|
type IPLDModel struct {
|
||||||
|
Key string `db:"key"`
|
||||||
|
Data []byte `db:"data"`
|
||||||
|
}
|
134
statediff/indexer/models/v2/batch.go
Normal file
134
statediff/indexer/models/v2/batch.go
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
// VulcanizeDB
|
||||||
|
// Copyright © 2021 Vulcanize
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package models
|
||||||
|
|
||||||
|
import "github.com/lib/pq"
|
||||||
|
|
||||||
|
// IPLDBatch holds the arguments for a batch insert of IPLD data
|
||||||
|
type IPLDBatch struct {
|
||||||
|
Keys []string
|
||||||
|
Values [][]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// UncleBatch is the db model for eth.uncle_cids
|
||||||
|
type UncleBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
HeaderIDs []int64
|
||||||
|
BlockHashes []string
|
||||||
|
ParentHashes []string
|
||||||
|
CIDs []string
|
||||||
|
MhKeys []string
|
||||||
|
Rewards []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// TxBatch is the db model for eth.transaction_cids
|
||||||
|
type TxBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
HeaderIDs []int64
|
||||||
|
Indexes []int64
|
||||||
|
TxHashes []string
|
||||||
|
CIDs []string
|
||||||
|
MhKeys []string
|
||||||
|
Dsts []string
|
||||||
|
Srcs []string
|
||||||
|
Data [][]byte
|
||||||
|
Types []uint8
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccessListElementBatch is the db model for eth.access_list_entry
|
||||||
|
type AccessListElementBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
Indexes []int64
|
||||||
|
TxIDs []int64
|
||||||
|
Addresses []string
|
||||||
|
StorageKeys []pq.StringArray
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReceiptBatch is the db model for eth.receipt_cids
|
||||||
|
type ReceiptBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
TxIDs []int64
|
||||||
|
LeafCIDs []string
|
||||||
|
LeafMhKeys []string
|
||||||
|
PostStatuses []int64
|
||||||
|
PostStates []string
|
||||||
|
Contracts []string
|
||||||
|
ContractHashes []string
|
||||||
|
LogRoots []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateNodeBatch is the db model for eth.state_cids
|
||||||
|
type StateNodeBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
HeaderIDs []int64
|
||||||
|
Paths [][]byte
|
||||||
|
StateKeys []string
|
||||||
|
NodeTypes []int
|
||||||
|
CIDs []string
|
||||||
|
MhKeys []string
|
||||||
|
Diffs []bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageNodeBatch is the db model for eth.storage_cids
|
||||||
|
type StorageNodeBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
StateIDs []int64
|
||||||
|
Paths [][]byte
|
||||||
|
StorageKeys []string
|
||||||
|
NodeTypes []int
|
||||||
|
CIDs []string
|
||||||
|
MhKeys []string
|
||||||
|
Diffs []bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageNodeWithStateKeyBatch is a db model for eth.storage_cids + eth.state_cids.state_key
|
||||||
|
type StorageNodeWithStateKeyBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
StateIDs []int64
|
||||||
|
Paths [][]byte
|
||||||
|
StateKeys []string
|
||||||
|
StorageKeys []string
|
||||||
|
NodeTypes []int
|
||||||
|
CIDs []string
|
||||||
|
MhKeys []string
|
||||||
|
Diffs []bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateAccountBatch is a db model for an eth state account (decoded value of state leaf node)
|
||||||
|
type StateAccountBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
StateIDs []int64
|
||||||
|
Balances []string
|
||||||
|
Nonces []int64
|
||||||
|
CodeHashes [][]byte
|
||||||
|
StorageRoots []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// LogsBatch is the db model for eth.logs
|
||||||
|
type LogsBatch struct {
|
||||||
|
IDs []int64
|
||||||
|
LeafCIDs []string
|
||||||
|
LeafMhKeys []string
|
||||||
|
ReceiptIDs []int64
|
||||||
|
Addresses []string
|
||||||
|
Indexes []int64
|
||||||
|
Data [][]byte
|
||||||
|
Topic0s []string
|
||||||
|
Topic1s []string
|
||||||
|
Topic2s []string
|
||||||
|
Topic3s []string
|
||||||
|
}
|
149
statediff/indexer/models/v2/models.go
Normal file
149
statediff/indexer/models/v2/models.go
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
// VulcanizeDB
|
||||||
|
// Copyright © 2019 Vulcanize
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package models
|
||||||
|
|
||||||
|
import "github.com/lib/pq"
|
||||||
|
|
||||||
|
// HeaderModel is the db model for eth.header_cids
|
||||||
|
type HeaderModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
BlockNumber string `db:"block_number"`
|
||||||
|
BlockHash string `db:"block_hash"`
|
||||||
|
ParentHash string `db:"parent_hash"`
|
||||||
|
CID string `db:"cid"`
|
||||||
|
MhKey string `db:"mh_key"`
|
||||||
|
TotalDifficulty string `db:"td"`
|
||||||
|
NodeID int64 `db:"node_id"`
|
||||||
|
Reward string `db:"reward"`
|
||||||
|
StateRoot string `db:"state_root"`
|
||||||
|
UncleRoot string `db:"uncle_root"`
|
||||||
|
TxRoot string `db:"tx_root"`
|
||||||
|
RctRoot string `db:"receipt_root"`
|
||||||
|
Bloom []byte `db:"bloom"`
|
||||||
|
Timestamp uint64 `db:"timestamp"`
|
||||||
|
TimesValidated int64 `db:"times_validated"`
|
||||||
|
BaseFee *int64 `db:"base_fee"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UncleModel is the db model for eth.uncle_cids
|
||||||
|
type UncleModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
HeaderID int64 `db:"header_id"`
|
||||||
|
BlockHash string `db:"block_hash"`
|
||||||
|
ParentHash string `db:"parent_hash"`
|
||||||
|
CID string `db:"cid"`
|
||||||
|
MhKey string `db:"mh_key"`
|
||||||
|
Reward string `db:"reward"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TxModel is the db model for eth.transaction_cids
|
||||||
|
type TxModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
HeaderID int64 `db:"header_id"`
|
||||||
|
Index int64 `db:"index"`
|
||||||
|
TxHash string `db:"tx_hash"`
|
||||||
|
CID string `db:"cid"`
|
||||||
|
MhKey string `db:"mh_key"`
|
||||||
|
Dst string `db:"dst"`
|
||||||
|
Src string `db:"src"`
|
||||||
|
Data []byte `db:"tx_data"`
|
||||||
|
Type uint8 `db:"tx_type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccessListElementModel is the db model for eth.access_list_entry
|
||||||
|
type AccessListElementModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
Index int64 `db:"index"`
|
||||||
|
TxID int64 `db:"tx_id"`
|
||||||
|
Address string `db:"address"`
|
||||||
|
StorageKeys pq.StringArray `db:"storage_keys"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReceiptModel is the db model for eth.receipt_cids
|
||||||
|
type ReceiptModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
TxID int64 `db:"tx_id"`
|
||||||
|
LeafCID string `db:"leaf_cid"`
|
||||||
|
LeafMhKey string `db:"leaf_mh_key"`
|
||||||
|
PostStatus uint64 `db:"post_status"`
|
||||||
|
PostState string `db:"post_state"`
|
||||||
|
Contract string `db:"contract"`
|
||||||
|
ContractHash string `db:"contract_hash"`
|
||||||
|
LogRoot string `db:"log_root"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateNodeModel is the db model for eth.state_cids
|
||||||
|
type StateNodeModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
HeaderID int64 `db:"header_id"`
|
||||||
|
Path []byte `db:"state_path"`
|
||||||
|
StateKey string `db:"state_leaf_key"`
|
||||||
|
NodeType int `db:"node_type"`
|
||||||
|
CID string `db:"cid"`
|
||||||
|
MhKey string `db:"mh_key"`
|
||||||
|
Diff bool `db:"diff"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageNodeModel is the db model for eth.storage_cids
|
||||||
|
type StorageNodeModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
StateID int64 `db:"state_id"`
|
||||||
|
Path []byte `db:"storage_path"`
|
||||||
|
StorageKey string `db:"storage_leaf_key"`
|
||||||
|
NodeType int `db:"node_type"`
|
||||||
|
CID string `db:"cid"`
|
||||||
|
MhKey string `db:"mh_key"`
|
||||||
|
Diff bool `db:"diff"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageNodeWithStateKeyModel is a db model for eth.storage_cids + eth.state_cids.state_key
|
||||||
|
type StorageNodeWithStateKeyModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
StateID int64 `db:"state_id"`
|
||||||
|
Path []byte `db:"storage_path"`
|
||||||
|
StateKey string `db:"state_leaf_key"`
|
||||||
|
StorageKey string `db:"storage_leaf_key"`
|
||||||
|
NodeType int `db:"node_type"`
|
||||||
|
CID string `db:"cid"`
|
||||||
|
MhKey string `db:"mh_key"`
|
||||||
|
Diff bool `db:"diff"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateAccountModel is a db model for an eth state account (decoded value of state leaf node)
|
||||||
|
type StateAccountModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
StateID int64 `db:"state_id"`
|
||||||
|
Balance string `db:"balance"`
|
||||||
|
Nonce uint64 `db:"nonce"`
|
||||||
|
CodeHash []byte `db:"code_hash"`
|
||||||
|
StorageRoot string `db:"storage_root"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// LogsModel is the db model for eth.logs
|
||||||
|
type LogsModel struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
LeafCID string `db:"leaf_cid"`
|
||||||
|
LeafMhKey string `db:"leaf_mh_key"`
|
||||||
|
ReceiptID int64 `db:"receipt_id"`
|
||||||
|
Address string `db:"address"`
|
||||||
|
Index int64 `db:"index"`
|
||||||
|
Data []byte `db:"log_data"`
|
||||||
|
Topic0 string `db:"topic0"`
|
||||||
|
Topic1 string `db:"topic1"`
|
||||||
|
Topic2 string `db:"topic2"`
|
||||||
|
Topic3 string `db:"topic3"`
|
||||||
|
}
|
@ -18,12 +18,6 @@ package models
|
|||||||
|
|
||||||
import "github.com/lib/pq"
|
import "github.com/lib/pq"
|
||||||
|
|
||||||
// IPLDModel is the db model for public.blocks
|
|
||||||
type IPLDModel struct {
|
|
||||||
Key string `db:"key"`
|
|
||||||
Data []byte `db:"data"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// HeaderModel is the db model for eth.header_cids
|
// HeaderModel is the db model for eth.header_cids
|
||||||
type HeaderModel struct {
|
type HeaderModel struct {
|
||||||
BlockNumber string `db:"block_number"`
|
BlockNumber string `db:"block_number"`
|
Loading…
Reference in New Issue
Block a user