Documentation
¶
Index ¶
- Constants
- func EventSpecSchema() *jsonschema.Schema
- type DBAction
- type EventClass
- type EventData
- type EventDataRow
- type EventDataTable
- type EventFieldMapping
- type EventSpec
- type EventTables
- type SQLCleanDBQuery
- type SQLColumnType
- type SQLConnection
- type SQLErrorType
- type SQLTable
- type SQLTableColumn
- type UpsertDeleteQuery
Constants ¶
const ( EventFieldTypeInt = "int" EventFieldTypeUInt = "uint" EventFieldTypeAddress = "address" EventFieldTypeBytes = "bytes" EventFieldTypeBool = "bool" EventFieldTypeString = "string" )
Defined event input types - these are currently align with EVM types but they technically define a pair/mapping of EVM type -> SQL type
const ( PostgresDB = "postgres" SQLiteDB = "sqlite" )
supported databases
const ( SQLLogTableName = "_vent_log" SQLDictionaryTableName = "_vent_dictionary" SQLBlockTableName = "_vent_block" SQLTxTableName = "_vent_tx" SQLChainInfoTableName = "_vent_chain" )
SQL log & dictionary tables
const ( // log SQLColumnLabelId = "_id" SQLColumnLabelTimeStamp = "_timestamp" SQLColumnLabelTableName = "_tablename" SQLColumnLabelEventName = "_eventname" SQLColumnLabelEventFilter = "_eventfilter" SQLColumnLabelHeight = "_height" SQLColumnLabelTxHash = "_txhash" SQLColumnLabelAction = "_action" SQLColumnLabelDataRow = "_datarow" SQLColumnLabelSqlStmt = "_sqlstmt" SQLColumnLabelSqlValues = "_sqlvalues" // dictionary SQLColumnLabelColumnName = "_columnname" SQLColumnLabelColumnType = "_columntype" SQLColumnLabelColumnLength = "_columnlength" SQLColumnLabelPrimaryKey = "_primarykey" SQLColumnLabelColumnOrder = "_columnorder" // chain info SQLColumnLabelBurrowVer = "_burrowversion" SQLColumnLabelChainID = "_chainid" // context SQLColumnLabelIndex = "_index" SQLColumnLabelEventType = "_eventtype" SQLColumnLabelBlockHeader = "_blockheader" SQLColumnLabelTxType = "_txtype" SQLColumnLabelEnvelope = "_envelope" SQLColumnLabelEvents = "_events" SQLColumnLabelResult = "_result" SQLColumnLabelReceipt = "_receipt" SQLColumnLabelException = "_exception" )
fixed sql column names in tables
const ( // event related EventNameLabel = "eventName" EventTypeLabel = "eventType" // block related BlockHeightLabel = "height" BlockHeaderLabel = "blockHeader" // transaction related TxTxTypeLabel = "txType" TxTxHashLabel = "txHash" TxIndexLabel = "index" TxEnvelopeLabel = "envelope" TxEventsLabel = "events" TxResultLabel = "result" TxReceiptLabel = "receipt" TxExceptionLabel = "exception" )
labels for column mapping
Variables ¶
This section is empty.
Functions ¶
func EventSpecSchema ¶
func EventSpecSchema() *jsonschema.Schema
Types ¶
type EventClass ¶
type EventClass struct {
// Destination table in DB
TableName string
// Burrow event filter query in query peg grammar
Filter string
// The name of a solidity event field that when present indicates that the rest of the event should be interpreted
// as requesting a row deletion (rather than upsert) in the projection table.
DeleteMarkerField string `json:",omitempty"`
// EventFieldMapping from solidity event field name to EventFieldMapping descriptor
FieldMappings []*EventFieldMapping
// contains filtered or unexported fields
}
EventClass struct (table name where to persist filtered events and it structure)
func (*EventClass) GetFieldMapping ¶
func (ec *EventClass) GetFieldMapping(fieldName string) *EventFieldMapping
func (*EventClass) GetFilter ¶
func (ec *EventClass) GetFilter() string
func (*EventClass) Query ¶
func (ec *EventClass) Query() (query.Query, error)
Get a (memoised) Query from the EventClass Filter string
func (*EventClass) Validate ¶
func (ec *EventClass) Validate() error
Validate checks the structure of an EventClass
type EventData ¶
type EventData struct {
BlockHeight uint64
Tables map[string]EventDataTable
}
EventData contains data for each block of events already mapped to SQL columns & tables Tables map key is the table name
type EventDataRow ¶
type EventDataRow struct {
Action DBAction
RowData map[string]interface{}
// The EventClass that caused this row to be emitted (if it was caused by an specific event)
EventClass *EventClass
}
EventDataRow contains each SQL column name and a corresponding value to upsert map key is the column name and map value is the given column value if Action == 'delete' then the row has to be deleted
type EventFieldMapping ¶
type EventFieldMapping struct {
// EVM event field name to process
Field string
// EVM type of this field - used to derive SQL type
Type string
// Destination SQL column name to which to map this event field
ColumnName string
// Whether this event field should map to a primary key
Primary bool `json:",omitempty"`
// Whether to convert this event field from bytes32 to string
BytesToString bool `json:",omitempty"`
// Notification channels on which submit (via a trigger) a payload that contains this column's new value (upsert) or
// old value (delete). The payload will contain all other values with the same channel set as a JSON object.
Notify []string `json:",omitempty"`
}
EventFieldMapping struct (table column definition)
func (EventFieldMapping) Validate ¶
func (evColumn EventFieldMapping) Validate() error
Validate checks the structure of an EventFieldMapping
type EventTables ¶
EventTables contains SQL tables definition (-> the event name maps to SQL table)
type SQLCleanDBQuery ¶
type SQLCleanDBQuery struct {
SelectChainIDQry string
DeleteChainIDQry string
InsertChainIDQry string
SelectDictionaryQry string
DeleteDictionaryQry string
DeleteLogQry string
}
SQLCleanDBQuery stores queries needed to clean the database
type SQLColumnType ¶
type SQLColumnType int
SQLColumnType to store generic SQL column types
const ( SQLColumnTypeBool SQLColumnType = iota SQLColumnTypeByteA SQLColumnTypeInt SQLColumnTypeSerial SQLColumnTypeText SQLColumnTypeVarchar SQLColumnTypeTimeStamp SQLColumnTypeNumeric SQLColumnTypeJSON SQLColumnTypeBigInt )
generic SQL column types
func (SQLColumnType) IsNumeric ¶
func (ct SQLColumnType) IsNumeric() bool
IsNumeric determines if an sqlColumnType is numeric
func (SQLColumnType) String ¶
func (ct SQLColumnType) String() string
type SQLConnection ¶
type SQLConnection struct {
DBAdapter string
DBURL string
DBSchema string
Log *logger.Logger
ChainID string
BurrowVersion string
}
SQLConnection stores parameters to build a new db connection & initialize the database
type SQLErrorType ¶
type SQLErrorType int
SQLErrorType stores generic SQL error types
const ( SQLErrorTypeDuplicatedSchema SQLErrorType = iota SQLErrorTypeDuplicatedColumn SQLErrorTypeDuplicatedTable SQLErrorTypeInvalidType SQLErrorTypeUndefinedTable SQLErrorTypeUndefinedColumn SQLErrorTypeGeneric )
generic SQL error types
type SQLTable ¶
type SQLTable struct {
Name string
Columns []*SQLTableColumn
// Map of channel name -> columns to be sent as payload on that channel
NotifyChannels map[string][]string
// contains filtered or unexported fields
}
SQLTable contains the structure of a SQL table,
func (*SQLTable) GetColumn ¶
func (table *SQLTable) GetColumn(columnName string) *SQLTableColumn
type SQLTableColumn ¶
type SQLTableColumn struct {
Name string
Type SQLColumnType
Primary bool
Length int
}
SQLTableColumn contains the definition of a SQL table column, the Order is given to be able to sort the columns to be created
func (*SQLTableColumn) Equals ¶
func (col *SQLTableColumn) Equals(otherCol *SQLTableColumn) bool
func (*SQLTableColumn) String ¶
func (col *SQLTableColumn) String() string
type UpsertDeleteQuery ¶
UpsertDeleteQuery contains query and values to upsert or delete row data