mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 02:44:59 +00:00
* Implement Schemar.SetDatabaseOption(option, value string) This replaces the temporary `SetDatabaseOptions()` method, which replaced the entire DatabaseOptions struct, with `SetDatabaseOption` which takes an option/value pair of strings to set. * Add SetDatabaseOption to controller http handler and client This commit also: - renames some `writeLog` to `writelog` - updates ApplyDirective to call resource.Unlock() on any resources being removed from the local worker * Add Database related methods to SchemaAPI interface Currently all implementations of this interface are implemented with "unimplemented" errors on those methods. Next will be to implement the necessary methods. * SQL: CREATE DATABASE and SHOW DATABASES * SQL: DROP DATABASE * SQL: Add UNITS option to CREATE DATABASE * SQL: ALTER DATABASE * User serverlessStorage.Remove[*]Resource instead of resource.Unlock() * Add WITH keyword to CREATE/ALTER DATABASE * fix some WITH logic * linter fixes * WITH on CREATE DATABASE is not required
105 lines
4.4 KiB
Go
105 lines
4.4 KiB
Go
package dax
|
|
|
|
import "context"
|
|
|
|
// Schemar is similar to the pilosa.SchemaAPI interface, but it takes
|
|
// QualifiedDatabaseIDs into account. Note that it is also similar to the
|
|
// schemar.Schemar interface, but that is used internally, typically within the
|
|
// Controller, and it takes Transactions rather than a Context, because its
|
|
// methods are assumed to be used as part of a larger request.
|
|
// TODO(tlt): clean up the mds/controller/schemar Schemar interface confusion.
|
|
type Schemar interface {
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Database methods
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
CreateDatabase(context.Context, *QualifiedDatabase) error
|
|
DropDatabase(context.Context, QualifiedDatabaseID) error
|
|
|
|
DatabaseByName(ctx context.Context, orgID OrganizationID, dbname DatabaseName) (*QualifiedDatabase, error)
|
|
DatabaseByID(ctx context.Context, qdbid QualifiedDatabaseID) (*QualifiedDatabase, error)
|
|
|
|
SetDatabaseOption(ctx context.Context, qdbid QualifiedDatabaseID, option string, value string) error
|
|
|
|
// Databases returns a list of databases. If the list of DatabaseIDs is
|
|
// empty, all databases will be returned. If greater than zero DatabaseIDs
|
|
// are passed in the second argument, only databases matching those IDs will
|
|
// be returned.
|
|
Databases(context.Context, OrganizationID, ...DatabaseID) ([]*QualifiedDatabase, error)
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Table methods
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
CreateTable(ctx context.Context, qtbl *QualifiedTable) error
|
|
DropTable(ctx context.Context, qtid QualifiedTableID) error
|
|
|
|
TableByName(ctx context.Context, qdbid QualifiedDatabaseID, tname TableName) (*QualifiedTable, error)
|
|
TableByID(ctx context.Context, qtid QualifiedTableID) (*QualifiedTable, error)
|
|
|
|
// Tables returns a list of tables. If the qualifiers DatabaseID is empty,
|
|
// all tables in the org will be returned. If the OrganizationID is empty,
|
|
// all tables will be returned. If both are populated, only tables in that
|
|
// database will be returned. If greater than zero table IDs are passed in
|
|
// the third argument, only tables matching those IDs will be returned.
|
|
Tables(ctx context.Context, qdbid QualifiedDatabaseID, tids ...TableID) ([]*QualifiedTable, error)
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Field methods
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
CreateField(ctx context.Context, qtid QualifiedTableID, fld *Field) error
|
|
DropField(ctx context.Context, qtid QualifiedTableID, fname FieldName) error
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
// Ensure type implements interface.
|
|
var _ Schemar = &NopSchemar{}
|
|
|
|
// NopSchemar is a no-op implementation of the Schemar interface.
|
|
type NopSchemar struct{}
|
|
|
|
func NewNopSchemar() *NopSchemar {
|
|
return &NopSchemar{}
|
|
}
|
|
|
|
func (s *NopSchemar) CreateDatabase(context.Context, *QualifiedDatabase) error {
|
|
return nil
|
|
}
|
|
func (s *NopSchemar) DropDatabase(context.Context, QualifiedDatabaseID) error {
|
|
return nil
|
|
}
|
|
func (s *NopSchemar) DatabaseByName(ctx context.Context, orgID OrganizationID, dbname DatabaseName) (*QualifiedDatabase, error) {
|
|
return nil, nil
|
|
}
|
|
func (s *NopSchemar) DatabaseByID(ctx context.Context, qdbid QualifiedDatabaseID) (*QualifiedDatabase, error) {
|
|
return nil, nil
|
|
}
|
|
func (s *NopSchemar) SetDatabaseOption(ctx context.Context, qdbid QualifiedDatabaseID, option string, value string) error {
|
|
return nil
|
|
}
|
|
func (s *NopSchemar) Databases(context.Context, OrganizationID, ...DatabaseID) ([]*QualifiedDatabase, error) {
|
|
return nil, nil
|
|
}
|
|
func (s *NopSchemar) TableByName(context.Context, QualifiedDatabaseID, TableName) (*QualifiedTable, error) {
|
|
return nil, nil
|
|
}
|
|
func (s *NopSchemar) TableByID(ctx context.Context, qtid QualifiedTableID) (*QualifiedTable, error) {
|
|
return nil, nil
|
|
}
|
|
func (s *NopSchemar) Tables(ctx context.Context, qdbid QualifiedDatabaseID, tids ...TableID) ([]*QualifiedTable, error) {
|
|
return nil, nil
|
|
}
|
|
func (s *NopSchemar) CreateTable(ctx context.Context, qtbl *QualifiedTable) error {
|
|
return nil
|
|
}
|
|
func (s *NopSchemar) DropTable(ctx context.Context, qtid QualifiedTableID) error {
|
|
return nil
|
|
}
|
|
func (s *NopSchemar) CreateField(ctx context.Context, qtid QualifiedTableID, fld *Field) error {
|
|
return nil
|
|
}
|
|
func (s *NopSchemar) DropField(ctx context.Context, qtid QualifiedTableID, fld FieldName) error {
|
|
return nil
|
|
}
|