driver

package
v0.2.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Connection

type Connection interface {
	// DriverName returns the name associated with this driver.
	DriverName() string
	// ListDatabases returns the names of the available databases on this
	// connection.
	ListDatabases(ctx context.Context) ([]string, error)
	// CreateDatabase creates a database with the given name on this
	// connection.
	CreateDatabase(ctx context.Context, name string) error
	// DeleteDatabase deletes the indicated database on this connection.
	// Does not return an error if the database does not exist.
	DeleteDatabase(ctx context.Context, name string) error
	// ConnectToDatabase connects to the indicated database.
	ConnectToDatabase(ctx context.Context, name string) (Database, error)
	// Close closes the connection.
	Close() error
}

Connection is the interface encapsulating a driver connection.

type Database added in v0.1.37

type Database interface {
	// ListTables returns the names of the tables in the database.
	ListTables(ctx context.Context) ([]string, error)
	// CreateTable creates a table with the given name in the database.
	// The provided template should be used by the driver to create the
	// table (if appropriate).
	//
	// The driver is free to ignore the template if it is not required:
	// for example, a schema-less storage engine does not require a
	// template. The driver is free to assume that "template" is valid.
	CreateTable(ctx context.Context, name string, template record.Record) error
	// DeleteTable deletes the indicated table from the database. Does not
	// return an error if the table does not exist.
	DeleteTable(ctx context.Context, name string) error
	// RenameTable changes the name of a table in the database. The effect
	// of renaming a table to which there are open connections is undefined.
	RenameTable(ctx context.Context, oldname string, newname string) error
	// ConnectToTable connects to the indicated table in the database.
	ConnectToTable(ctx context.Context, name string) (Table, error)
	// Close closes the connection to the database.
	Close() error
}

Database is the interface encapsulating a database connection.

type SelectOneWherer added in v0.2.10

type SelectOneWherer interface {
	// SelectOneWhere returns the first record satisfying condition "cond"
	// (which may be nil if there are no conditions), sorted as specified
	// by "order" (which may be nil if there is no sort order required).
	// The returned record will be in the form specified by "template".
	// If no records match, then a nil record will be returned.
	//
	// The driver is free to assume that "template" is valid; that "cond"
	// is either nil, or "cond" is non-nil, valid, and is not of type
	// condition.Bool; that "order" is either nil, or "order" is non-nil
	// and valid; and that n is a non-negative integer.
	SelectOneWhere(ctx context.Context, template record.Record, cond condition.Condition, order sort.OrderBy) (record.Record, error)
}

SelectOneWherer is an optional interface a Table may support if it provides its own SelectOne method.

type Table

type Table interface {
	// Close closes the connection to the table.
	Close() error
	// Describe returns a best-guess template for the data in this table.
	//
	// Note that the accuracy of this template depends on the underlying
	// storage engine. It might not be possible to return an exact
	// description (for example, in a schema-less database), and in this
	// case we return a good guess based on a sample of the data available.
	Describe(ctx context.Context) (record.Record, error)
	// CountWhere returns the number of records in the table that satisfy
	// condition "cond" (which may be nil if there are no conditions).
	//
	// The driver is free to assume that "cond" is either nil, or "cond" is
	// non-nil, valid, and is not of type condition.Bool.
	CountWhere(ctx context.Context, cond condition.Condition) (int64, error)
	// Insert inserts the records from the given iterator into the table.
	//
	// Note: Insert should NOT call Close on the iterator.
	Insert(ctx context.Context, itr record.Iterator) error
	// UpdateWhere updates all records in the table that satisfy condition
	// "cond" (which may be nil if there are no conditions) by setting all
	// keys present in "replacement" to the given values. Returns the number
	// of records updated.
	//
	// The driver is free to assume that "replacement" is valid; and that
	// "cond" is either nil, or "cond" is non-nil, valid, and is not of
	// type condition.Bool.
	UpdateWhere(ctx context.Context, replacement record.Record, cond condition.Condition) (int64, error)
	// SelectWhere returns the results satisfying condition "cond" (which
	// may be nil if there are no conditions), sorted as specified by
	// "order" (which may be nil if there is no sort order required).
	// The returned records will be in the form specified by "template".
	//
	// The driver is free to assume that "template" is valid; that "cond"
	// is either nil, or "cond" is non-nil, valid, and is not of type
	// condition.Bool; and that "order" is either nil, or "order" is
	// non-nil and valid
	SelectWhere(ctx context.Context, template record.Record, cond condition.Condition, order sort.OrderBy) (record.Iterator, error)
	// SelectWhereLimit returns at most n results satisfying condition
	// "cond" (which may be nil if there are no conditions), sorted as
	// specified by "order" (which may be nil if there is no sort order
	// required). The returned records will be in the form specified by
	// "template".
	//
	// The driver is free to assume that "template" is valid; that "cond"
	// is either nil, or "cond" is non-nil, valid, and is not of type
	// condition.Bool; that "order" is either nil, or "order" is non-nil
	// and valid; and that n is a non-negative integer.
	SelectWhereLimit(ctx context.Context, template record.Record, cond condition.Condition, order sort.OrderBy, n int64) (record.Iterator, error)
	// DeleteWhere deletes those records in the table that satisfy condition
	// "cond" (which may be nil if there are no conditions). Returns the
	// number of records deleted.
	//
	// The driver is free to assume that "cond" is either nil, or "cond" is
	// non-nil, valid, and is not of type condition.Bool.
	DeleteWhere(ctx context.Context, cond condition.Condition) (int64, error)
	// AddIndex adds an index on the given key. If an index already exists,
	// this index is unmodified and nil is returned. The driver is free to
	// assume that the key is well-formed.
	AddIndex(ctx context.Context, key string) error
	// DeleteIndex deletes the index on the given key. If no index is
	// present, nil is returned. The driver is free to assume that the
	// key is well-formed.
	DeleteIndex(ctx context.Context, key string) error
	// ListIndices lists the keys for which indices are present. The driver
	// is free to assume that the key is well-formed.
	ListIndices(ctx context.Context) ([]string, error)
	// AddKeys updates each record r in the table, adding any keys in rec
	// that are not already present along with the corresponding values.
	// Any keys that are already present in r will be left unmodified. The
	// driver may assume that rec has been validated.
	AddKeys(ctx context.Context, rec record.Record) error
	// DeleteKeys updates all records in the table, deleting all the
	// specified keys if present. The driver may assume that the keys are
	// well-formed.
	DeleteKeys(ctx context.Context, keys []string) error
}

Table is the interface encapsulating a table in the database.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL