migrationsLib

package
v0.5.3 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: 14 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 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

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