mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54: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
102 lines
3.8 KiB
Go
102 lines
3.8 KiB
Go
// Package schemar provides the core Schemar interface.
|
|
package schemar
|
|
|
|
import (
|
|
"github.com/featurebasedb/featurebase/v3/dax"
|
|
)
|
|
|
|
type Schemar interface {
|
|
CreateDatabase(dax.Transaction, *dax.QualifiedDatabase) error
|
|
DropDatabase(dax.Transaction, dax.QualifiedDatabaseID) error
|
|
DatabaseByName(tx dax.Transaction, orgID dax.OrganizationID, dbname dax.DatabaseName) (*dax.QualifiedDatabase, error)
|
|
DatabaseByID(dax.Transaction, dax.QualifiedDatabaseID) (*dax.QualifiedDatabase, error)
|
|
|
|
SetDatabaseOption(tx dax.Transaction, qdbid dax.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(dax.Transaction, dax.OrganizationID, ...dax.DatabaseID) ([]*dax.QualifiedDatabase, error)
|
|
|
|
CreateTable(dax.Transaction, *dax.QualifiedTable) error
|
|
DropTable(dax.Transaction, dax.QualifiedTableID) error
|
|
CreateField(dax.Transaction, dax.QualifiedTableID, *dax.Field) error
|
|
DropField(dax.Transaction, dax.QualifiedTableID, dax.FieldName) error
|
|
Table(dax.Transaction, dax.QualifiedTableID) (*dax.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(dax.Transaction, dax.QualifiedDatabaseID, ...dax.TableID) ([]*dax.QualifiedTable, error)
|
|
|
|
// TableID is a reverse-lookup method to get the TableID for a given
|
|
// qualified TableName.
|
|
TableID(dax.Transaction, dax.QualifiedDatabaseID, dax.TableName) (dax.QualifiedTableID, 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(tx dax.Transaction, qtbl *dax.QualifiedDatabase) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) DropDatabase(tx dax.Transaction, qdbid dax.QualifiedDatabaseID) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) DatabaseByName(dax.Transaction, dax.OrganizationID, dax.DatabaseName) (*dax.QualifiedDatabase, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (s *NopSchemar) DatabaseByID(dax.Transaction, dax.QualifiedDatabaseID) (*dax.QualifiedDatabase, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (s *NopSchemar) SetDatabaseOption(tx dax.Transaction, qdbid dax.QualifiedDatabaseID, option string, value string) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) Databases(dax.Transaction, dax.OrganizationID, ...dax.DatabaseID) ([]*dax.QualifiedDatabase, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (s *NopSchemar) CreateTable(tx dax.Transaction, qtbl *dax.QualifiedTable) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) DropTable(tx dax.Transaction, qtid dax.QualifiedTableID) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) CreateField(tx dax.Transaction, qtid dax.QualifiedTableID, fld *dax.Field) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) DropField(tx dax.Transaction, qtid dax.QualifiedTableID, fld dax.FieldName) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *NopSchemar) Table(tx dax.Transaction, qtid dax.QualifiedTableID) (*dax.QualifiedTable, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (s *NopSchemar) Tables(tx dax.Transaction, qdbid dax.QualifiedDatabaseID, ids ...dax.TableID) ([]*dax.QualifiedTable, error) {
|
|
return []*dax.QualifiedTable{}, nil
|
|
}
|
|
|
|
func (s *NopSchemar) TableID(dax.Transaction, dax.QualifiedDatabaseID, dax.TableName) (dax.QualifiedTableID, error) {
|
|
return dax.QualifiedTableID{}, nil
|
|
}
|