Documentation ¶
Index ¶
- Constants
- Variables
- func WithInstance(instance *DB, config *Config) (database.Driver, error)
- type Config
- type DB
- type Spanner
- func (s *Spanner) Close() error
- func (s *Spanner) Drop() error
- func (s *Spanner) Lock() error
- func (s *Spanner) Open(url string) (database.Driver, error)
- func (s *Spanner) Run(migration io.Reader) error
- func (s *Spanner) SetVersion(version int, dirty bool) error
- func (s *Spanner) Unlock() error
- func (s *Spanner) Version() (version int, dirty bool, err error)
Constants ¶
const DefaultMigrationsTable = "SchemaMigrations"
DefaultMigrationsTable is used if no custom table is specified
Variables ¶
var ( ErrNilConfig = errors.New("no config") ErrNoDatabaseName = errors.New("no database name") ErrNoSchema = errors.New("no schema") ErrDatabaseDirty = errors.New("database is dirty") ErrLockHeld = errors.New("unable to obtain lock") ErrLockNotHeld = errors.New("unable to release already released lock") )
Driver errors
Functions ¶
Types ¶
type Config ¶
type Config struct { MigrationsTable string DatabaseName string // Whether to parse the migration DDL with spansql before // running them towards Spanner. // Parsing outputs clean DDL statements such as reformatted // and void of comments. CleanStatements bool // Comment flag name to treat a migration file as DML // Example #DML DmlFlag string }
Config used for a Spanner instance
type Spanner ¶
type Spanner struct {
// contains filtered or unexported fields
}
Spanner implements database.Driver for Google Cloud Spanner
func (*Spanner) Drop ¶
Drop implements database.Driver. Retrieves the database schema first and creates statements to drop the indexes and tables accordingly. Note: The drop statements are created in reverse order to how they're provided in the schema. Assuming the schema describes how the database can be "build up", it seems logical to "unbuild" the database simply by going the opposite direction. More testing
func (*Spanner) Lock ¶
Lock implements database.Driver but doesn't do anything because Spanner only enqueues the UpdateDatabaseDdlRequest.
func (*Spanner) SetVersion ¶
SetVersion implements database.Driver