migrationsLib

package
v0.5.4 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2024 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyMigrationSQL

func ApplyMigrationSQL(migStat MigrationStatus, isUpMigration bool) error

func DiffDBSchema

func DiffDBSchema(currentState, prevState *types.DbSchema) []types.MigAction

func GetInfoTextFromDiff added in v0.5.4

func GetInfoTextFromDiff(actions []types.MigAction) string

func GetSQLFromDiffChanges

func GetSQLFromDiffChanges(currentState, prevState *types.DbSchema, changes []types.MigAction) (string, error)

Types

type DbMigration

type DbMigration struct {
	// dir path will also contain the id (.../migrations/dbname/<timestamp>)
	DirPath  string
	IsActive bool
	Up       *DbMigration
	Down     *DbMigration
}

primitive DbMigration type, only containing helper function, use migrationsLib for complete use

a db migration directory will look like: /migrations/dbname/2024_01_01T00_00_00

this directory will contain files: "active" (present ONLY IF migration is currently active), "state.json" (a state snapshot of the CURRENT state) "up.sql" (sql file to go up to the next state) [COULD BE ABSENT IF LATEST STATE] "down.sql" (sql file to go down to the previous state) [ABSENT ON INIT MIGRATION] "info.md" (user maintained description of the current state changes relative to previous state)

func NewDbMigration

func NewDbMigration(migDirPath string, state *types.DbSchema, upSqlStr string, downSqlStr string, infoStr string) (*DbMigration, error)

ensures migration dir exists and writes state, up/down sql queries & info file to disk path string should look like this ".../migrations/dbname/2024-01-01T00_00_00"

func (*DbMigration) GetDownQuery

func (mig *DbMigration) GetDownQuery() (string, error)

func (*DbMigration) GetInfoFile

func (mig *DbMigration) GetInfoFile() (string, error)

func (*DbMigration) GetUpQuery

func (mig *DbMigration) GetUpQuery() (string, error)

func (*DbMigration) ReadState

func (mig *DbMigration) ReadState() (*types.DbSchema, error)

func (*DbMigration) SetActive

func (mig *DbMigration) SetActive() error

DEPRECATED set "this" migration as active. removes the active signal file from all other migrations in the parent directory then creates the active signal file in the current migration

func (*DbMigration) WriteDownQuery

func (mig *DbMigration) WriteDownQuery(sql string) error

func (*DbMigration) WriteInfoFile

func (mig *DbMigration) WriteInfoFile(infoStr string) error

func (*DbMigration) WriteUpQuery

func (mig *DbMigration) WriteUpQuery(sql string) error

type MigrationStatus

type MigrationStatus struct {
	Migrations      []DbMigration
	ActiveMigration *DbMigration
	IsInit          bool
}

func Status

func Status(dbname string, currentState *types.DbSchema) (MigrationStatus, error)

returns: list of migrations, the active migration index (-1 if no active migration found) and "isInit" to check if the migrations directory was initialized

Jump to

Keyboard shortcuts

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