...

Package spanner

import "github.com/golang-migrate/migrate/v4/database/spanner"
Overview
Index

Overview ▾

Constants

DefaultMigrationsTable is used if no custom table is specified

const DefaultMigrationsTable = "SchemaMigrations"

Variables

Driver errors

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")
)

func WithInstance

func WithInstance(instance *DB, config *Config) (database.Driver, error)

WithInstance implements database.Driver

type Config

Config used for a Spanner instance

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
}

type DB

type DB struct {
    // contains filtered or unexported fields
}

func NewDB

func NewDB(admin sdb.DatabaseAdminClient, data spanner.Client) *DB

type Spanner

Spanner implements database.Driver for Google Cloud Spanner

type Spanner struct {
    // contains filtered or unexported fields
}

func (*Spanner) Close

func (s *Spanner) Close() error

Close implements database.Driver

func (*Spanner) Drop

func (s *Spanner) Drop() error

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

func (s *Spanner) Lock() error

Lock implements database.Driver but doesn't do anything because Spanner only enqueues the UpdateDatabaseDdlRequest.

func (*Spanner) Open

func (s *Spanner) Open(url string) (database.Driver, error)

Open implements database.Driver

func (*Spanner) Run

func (s *Spanner) Run(migration io.Reader) error

Run implements database.Driver

func (*Spanner) SetVersion

func (s *Spanner) SetVersion(version int, dirty bool) error

SetVersion implements database.Driver

func (*Spanner) Unlock

func (s *Spanner) Unlock() error

Unlock implements database.Driver but no action required, see Lock.

func (*Spanner) Version

func (s *Spanner) Version() (version int, dirty bool, err error)

Version implements database.Driver