Documentation ¶
Index ¶
- type App
- type Attribute
- type AttributeType
- type Column
- type DataType
- type Engine
- type ExecutionData
- type Extension
- type ExtensionConfig
- type ForeignKey
- type ForeignKeyAction
- type ForeignKeyActionDo
- type ForeignKeyActionOn
- type Index
- type IndexType
- type Modifier
- type Procedure
- type Schema
- type Service
- type Table
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type App ¶
type App struct { // Service is the base application Service *Service // DB is a connection to the underlying Postgres database DB sql.DB // Engine is the underlying KwilDB engine, capable of storing and // executing against // Kuneiform schemas Engine Engine }
App is an application that can modify and query the local database instance.
type Attribute ¶ added in v0.7.0
type Attribute struct { Type AttributeType `json:"type"` Value string `json:"value,omitempty"` }
Attribute is a column attribute. These are constraints and default values.
type AttributeType ¶ added in v0.7.0
type AttributeType string
AttributeType is a type of attribute (e.g. PRIMARY_KEY, UNIQUE, NOT_NULL, DEFAULT, MIN, MAX, MIN_LENGTH, MAX_LENGTH)
const ( PRIMARY_KEY AttributeType = "PRIMARY_KEY" UNIQUE AttributeType = "UNIQUE" NOT_NULL AttributeType = "NOT_NULL" DEFAULT AttributeType = "DEFAULT" MIN AttributeType = "MIN" MAX AttributeType = "MAX" MIN_LENGTH AttributeType = "MIN_LENGTH" MAX_LENGTH AttributeType = "MAX_LENGTH" // is this kwil custom? )
Attribute Types
func (*AttributeType) Clean ¶ added in v0.7.0
func (a *AttributeType) Clean() error
Clean validates rules about the data in the struct (naming conventions, syntax, etc.).
func (*AttributeType) IsValid ¶ added in v0.7.0
func (a *AttributeType) IsValid() bool
func (AttributeType) String ¶ added in v0.7.0
func (a AttributeType) String() string
type Column ¶ added in v0.7.0
type Column struct { Name string `json:"name"` Type DataType `json:"type"` Attributes []*Attribute `json:"attributes,omitempty"` }
Column is a column in a table.
type DataType ¶ added in v0.7.0
type DataType string
DataType is a type of data (e.g. NULL, TEXT, INT, BLOB, BOOLEAN)
const ( NULL DataType = "NULL" TEXT DataType = "TEXT" INT DataType = "INT" BLOB DataType = "BLOB" BOOL DataType = "BOOLEAN" )
Data types
func (*DataType) Clean ¶ added in v0.7.0
Clean validates rules about the data in the struct (naming conventions, syntax, etc.).
type Engine ¶
type Engine interface { // CreateDataset deploys a new dataset from a schema. // The dataset will be owned by the caller. CreateDataset(ctx context.Context, tx sql.DB, schema *Schema, caller []byte) error // DeleteDataset deletes a dataset. // The caller must be the owner of the dataset. DeleteDataset(ctx context.Context, tx sql.DB, dbid string, caller []byte) error // Procedure executes a procedure in a dataset. It can be given // either a readwrite or readonly database transaction. If it is // given a read-only transaction, it will not be able to execute // any procedures that are not `view`. Procedure(ctx context.Context, tx sql.DB, options *ExecutionData) (*sql.ResultSet, error) // GetSchema returns the schema of a dataset. // It will return an error if the dataset does not exist. GetSchema(ctx context.Context, dbid string) (*Schema, error) // ListDatasets returns a list of all datasets on the network. ListDatasets(ctx context.Context, caller []byte) ([]*types.DatasetIdentifier, error) // Execute executes a SQL statement on a dataset. // It uses Kwil's SQL dialect. Execute(ctx context.Context, tx sql.DB, dbid, query string, values map[string]any) (*sql.ResultSet, error) }
type ExecutionData ¶
type ExecutionData struct { // Dataset is the DBID of the dataset that was called. // Even if a procedure in another dataset is called, this will // always be the original dataset. Dataset string // Procedure is the original procedure that was called. // Even if a nested procedure is called, this will always be the // original procedure. Procedure string // Args are the arguments that were passed to the procedure. // Currently these are all string or untyped nil values. Args []any // Signer is the address of public key that signed the incoming // transaction. Signer []byte // Caller is a string identifier for the signer. // It is derived from the signer's registered authenticator. // It is injected as a variable for usage in the query, under // the variable name "@caller". Caller string }
ExecutionOptions is contextual data that is passed to a procedure during call / execution. It is scoped to the lifetime of a single execution.
func (*ExecutionData) Clean ¶
func (e *ExecutionData) Clean() error
type Extension ¶ added in v0.7.0
type Extension struct { // Name is the name of the extension registered in the node Name string `json:"name"` // Initialization is a list of key value pairs that are used to initialize the extension Initialization []*ExtensionConfig `json:"initialization"` // Alias is the alias of the extension, which is how its instance is referred to in the schema Alias string `json:"alias"` }
Extension defines what extensions the schema uses, and how they are initialized.
type ExtensionConfig ¶ added in v0.7.0
ExtensionConfig is a key value pair that represents a configuration value for an extension
type ForeignKey ¶ added in v0.7.0
type ForeignKey struct { // ChildKeys are the columns that are referencing another. // For example, in FOREIGN KEY (a) REFERENCES tbl2(b), "a" is the child key ChildKeys []string `json:"child_keys"` // ParentKeys are the columns that are being referred to. // For example, in FOREIGN KEY (a) REFERENCES tbl2(b), "b" is the parent key ParentKeys []string `json:"parent_keys"` // ParentTable is the table that holds the parent columns. // For example, in FOREIGN KEY (a) REFERENCES tbl2(b), "tbl2" is the parent table ParentTable string `json:"parent_table"` // Action refers to what the foreign key should do when the parent is altered. // This is NOT the same as a database action; // however sqlite's docs refer to these as actions, // so we should be consistent with that. // For example, ON DELETE CASCADE is a foreign key action Actions []*ForeignKeyAction `json:"actions"` }
ForeignKey is a foreign key in a table.
func (*ForeignKey) Clean ¶ added in v0.7.0
func (f *ForeignKey) Clean() error
Clean runs a set of validations and cleans the foreign key
func (*ForeignKey) Copy ¶ added in v0.7.0
func (f *ForeignKey) Copy() *ForeignKey
Copy returns a copy of the foreign key
type ForeignKeyAction ¶ added in v0.7.0
type ForeignKeyAction struct { // On can be either "UPDATE" or "DELETE" On ForeignKeyActionOn `json:"on"` // Do specifies what a foreign key action should do Do ForeignKeyActionDo `json:"do"` }
ForeignKeyAction is used to specify what should occur if a parent key is updated or deleted
func (*ForeignKeyAction) Clean ¶ added in v0.7.0
func (f *ForeignKeyAction) Clean() error
Clean runs a set of validations and cleans the attributes in ForeignKeyAction
func (*ForeignKeyAction) Copy ¶ added in v0.7.0
func (f *ForeignKeyAction) Copy() *ForeignKeyAction
Copy returns a copy of the foreign key action
type ForeignKeyActionDo ¶ added in v0.7.0
type ForeignKeyActionDo string
ForeignKeyActionDo specifies what should be done when a foreign key action is triggered.
const ( // DO_NO_ACTION does nothing when a parent key is altered DO_NO_ACTION ForeignKeyActionDo = "NO ACTION" // DO_RESTRICT prevents the parent key from being altered DO_RESTRICT ForeignKeyActionDo = "RESTRICT" // DO_SET_NULL sets the child key(s) to NULL DO_SET_NULL ForeignKeyActionDo = "SET NULL" // DO_SET_DEFAULT sets the child key(s) to their default values DO_SET_DEFAULT ForeignKeyActionDo = "SET DEFAULT" // DO_CASCADE updates the child key(s) or deletes the records (depending on the action type) DO_CASCADE ForeignKeyActionDo = "CASCADE" )
ForeignKeyActionDo types
func (*ForeignKeyActionDo) Clean ¶ added in v0.7.0
func (f *ForeignKeyActionDo) Clean() error
Clean checks the validity or the string, and converts it to the correct case
func (*ForeignKeyActionDo) IsValid ¶ added in v0.7.0
func (f *ForeignKeyActionDo) IsValid() bool
IsValid checks if the string is a valid ForeignKeyActionDo
func (ForeignKeyActionDo) String ¶ added in v0.7.0
func (f ForeignKeyActionDo) String() string
String returns the ForeignKeyActionDo as a string
type ForeignKeyActionOn ¶ added in v0.7.0
type ForeignKeyActionOn string
ForeignKeyActionOn specifies when a foreign key action should occur. It can be either "UPDATE" or "DELETE".
const ( // ON_UPDATE is used to specify an action should occur when a parent key is updated ON_UPDATE ForeignKeyActionOn = "UPDATE" // ON_DELETE is used to specify an action should occur when a parent key is deleted ON_DELETE ForeignKeyActionOn = "DELETE" )
ForeignKeyActionOn types
func (*ForeignKeyActionOn) Clean ¶ added in v0.7.0
func (f *ForeignKeyActionOn) Clean() error
Clean checks whether the string is valid, and will convert it to the correct case.
func (*ForeignKeyActionOn) IsValid ¶ added in v0.7.0
func (f *ForeignKeyActionOn) IsValid() bool
IsValid checks whether or not the string is a valid ForeignKeyActionOn
func (ForeignKeyActionOn) String ¶ added in v0.7.0
func (f ForeignKeyActionOn) String() string
String returns the ForeignKeyActionOn as a string
type Index ¶ added in v0.7.0
type Index struct { Name string `json:"name"` Columns []string `json:"columns"` Type IndexType `json:"type"` }
Index is an index on a table.
type IndexType ¶ added in v0.7.0
type IndexType string
IndexType is a type of index (e.g. BTREE, UNIQUE_BTREE, PRIMARY)
const ( // BTREE is the default index type. BTREE IndexType = "BTREE" // UNIQUE_BTREE is a unique BTREE index. UNIQUE_BTREE IndexType = "UNIQUE_BTREE" // PRIMARY is a primary index. // Only one primary index is allowed per table. // A primary index cannot exist on a table that also has a primary key. PRIMARY IndexType = "PRIMARY" )
index types
type Modifier ¶ added in v0.7.0
type Modifier string
Modifier modifies the access to a procedure.
const ( // View means that an action does not modify the database. ModifierView Modifier = "VIEW" // Authenticated requires that the caller is identified. ModifierAuthenticated Modifier = "AUTHENTICATED" // Owner requires that the caller is the owner of the database. ModifierOwner Modifier = "OWNER" )
type Procedure ¶ added in v0.7.0
type Procedure struct { Name string `json:"name"` Annotations []string `json:"annotations,omitempty"` Args []string `json:"inputs"` Public bool `json:"public"` Modifiers []Modifier `json:"modifiers"` Statements []string `json:"statements"` }
Procedure is a procedure in a database schema. These are defined by Kuneiform's `action` keyword.
type Schema ¶ added in v0.7.0
type Schema struct { // Name is the name of the schema given by the deployer. Name string `json:"name"` // Owner is the identifier (generally an address in bytes or public key) of the owner of the schema Owner []byte `json:"owner"` Extensions []*Extension `json:"extensions"` Tables []*Table `json:"tables"` Procedures []*Procedure `json:"procedures"` }
Schema is a database schema that contains tables, procedures, and extensions.
type Service ¶
type Service struct { // Logger is a logger for the application Logger log.SugaredLogger // ExtensionConfigs is a map of the nodes extensions and local // configurations. // It maps: extension_name -> config_key -> config_value ExtensionConfigs map[string]map[string]string }
Service provides access to general application information to extensions.
type Table ¶ added in v0.7.0
type Table struct { Name string `json:"name"` Columns []*Column `json:"columns"` Indexes []*Index `json:"indexes,omitempty"` ForeignKeys []*ForeignKey `json:"foreign_keys"` }
Table is a table in a database schema.
func (*Table) Clean ¶ added in v0.7.0
Clean validates rules about the data in the struct (naming conventions, syntax, etc.).
func (*Table) GetPrimaryKey ¶ added in v0.7.0
GetPrimaryKey returns the names of the column(s) that make up the primary key. If there is more than one, or no primary key, an error is returned.
Directories ¶
Path | Synopsis |
---|---|
Package sql defines common type required by SQL database implementations and consumers.
|
Package sql defines common type required by SQL database implementations and consumers. |