Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - Variables
 - func ProjectionSpecSchema() *jsonschema.Schema
 - type DBAction
 - type EventClass
 - type EventData
 - type EventDataRow
 - type EventDataTable
 - type EventFieldMapping
 - type EventTables
 - type ProjectionSpec
 - type SQLCleanDBQuery
 - type SQLColumnNames
 - type SQLColumnType
 - type SQLConnection
 - type SQLErrorType
 - type SQLNames
 - type SQLTable
 - type SQLTableColumn
 - type SQLTableNames
 - 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 ( // event related EventNameLabel = "eventName" EventTypeLabel = "eventType" EventIndexLabel = "eventIndex" // block related ChainIDLabel = "chainID" BlockHeightLabel = "height" TxIndexLabel = "txIndex" // transaction related TxTxHashLabel = "txHash" )
labels for column mapping
Variables ¶
var DefaultSQLColumnNames = SQLColumnNames{
	Id:          "_id",
	TimeStamp:   "_timestamp",
	TableName:   "_tablename",
	EventName:   "_eventname",
	EventFilter: "_eventfilter",
	Height:      "_height",
	TxHash:      "_txhash",
	Action:      "_action",
	DataRow:     "_datarow",
	SqlStmt:     "_sqlstmt",
	SqlValues:   "_sqlvalues",
	ColumnName:   "_columnname",
	ColumnType:   "_columntype",
	ColumnLength: "_columnlength",
	PrimaryKey:   "_primarykey",
	ColumnOrder:  "_columnorder",
	BurrowVersion: "_burrowversion",
	ChainID:       "_chainid",
	TxIndex:     "_txindex",
	EventIndex:  "_eventindex",
	EventType:   "_eventtype",
	BlockHeader: "_blockheader",
	TxType:      "_txtype",
	Envelope:    "_envelope",
	Events:      "_events",
	Result:      "_result",
	Receipt:     "_receipt",
	Origin:      "_origin",
	Exception:   "_exception",
}
    var DefaultSQLNames = SQLNames{ Tables: DefaultSQLTableNames, Columns: DefaultSQLColumnNames, }
var DefaultSQLTableNames = SQLTableNames{
	Log:        "_vent_log",
	Dictionary: "_vent_dictionary",
	Block:      "_vent_block",
	Tx:         "_vent_tx",
	ChainInfo:  "_vent_chain",
}
    Functions ¶
func ProjectionSpecSchema ¶ added in v0.28.0
func ProjectionSpecSchema() *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 `json:"-"`
}
    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 Map from TableName to SQLTable
type ProjectionSpec ¶ added in v0.28.0
type ProjectionSpec []*EventClass
ProjectionSpec contains all event class specifications
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 SQLColumnNames ¶ added in v0.26.0
type SQLColumnNames struct {
	// log
	Id          string
	TimeStamp   string
	TableName   string
	EventName   string
	EventFilter string
	Height      string
	TxHash      string
	Action      string
	DataRow     string
	SqlStmt     string
	SqlValues   string
	// dictionary
	ColumnName   string
	ColumnType   string
	ColumnLength string
	PrimaryKey   string
	ColumnOrder  string
	// chain info
	BurrowVersion string
	ChainID       string
	// context
	TxIndex     string
	EventIndex  string
	EventType   string
	BlockHeader string
	TxType      string
	Envelope    string
	Events      string
	Result      string
	Receipt     string
	Origin      string
	Exception   string
}
    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 ¶
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 SQLNames ¶ added in v0.26.0
type SQLNames struct {
	Tables  SQLTableNames
	Columns SQLColumnNames
}
    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 of variable column type where applicable 0 indicates variable/unbounded length
	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 SQLTableNames ¶ added in v0.26.0
type UpsertDeleteQuery ¶
UpsertDeleteQuery contains query and values to upsert or delete row data