Documentation
¶
Index ¶
- func Migrate(ctx context.Context, c chan *Result, to, from dbconn.DBConn)
- type Migration
- type MigrationBuilder
- func (m *MigrationBuilder) Build() *Migration
- func (m *MigrationBuilder) Dependencies(d []*Migration) *MigrationBuilder
- func (m *MigrationBuilder) From(from dbconn.DBConn) *MigrationBuilder
- func (m *MigrationBuilder) ID(id int) *MigrationBuilder
- func (m *MigrationBuilder) Name(name string) *MigrationBuilder
- func (m *MigrationBuilder) RunFunc(f *MigrationFunc) *MigrationBuilder
- func (m *MigrationBuilder) To(to dbconn.DBConn) *MigrationBuilder
- type MigrationFunc
- type MigrationQueue
- type Result
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Migration ¶
type Migration struct { Name string // name of the migration registered in the changelog ID int // integer used as a unique identifier for the migration To dbconn.DBConn // connection to database where data is being moved to or transformed on From dbconn.DBConn // connection to database where data is coming from Dependencies []*Migration // migrations that must be performed before this one RunFunc *MigrationFunc // function containing migration logic // contains filtered or unexported fields }
Migration represents some sort of transformation or transfer of data from one database to another.
type MigrationBuilder ¶
type MigrationBuilder struct {
Migration *Migration
}
func FromMigration ¶
func FromMigration(m *Migration) *MigrationBuilder
func NewMigration ¶
func NewMigration() *MigrationBuilder
func (*MigrationBuilder) Build ¶
func (m *MigrationBuilder) Build() *Migration
func (*MigrationBuilder) Dependencies ¶
func (m *MigrationBuilder) Dependencies(d []*Migration) *MigrationBuilder
func (*MigrationBuilder) From ¶
func (m *MigrationBuilder) From(from dbconn.DBConn) *MigrationBuilder
func (*MigrationBuilder) ID ¶
func (m *MigrationBuilder) ID(id int) *MigrationBuilder
func (*MigrationBuilder) Name ¶
func (m *MigrationBuilder) Name(name string) *MigrationBuilder
func (*MigrationBuilder) RunFunc ¶
func (m *MigrationBuilder) RunFunc(f *MigrationFunc) *MigrationBuilder
func (*MigrationBuilder) To ¶
func (m *MigrationBuilder) To(to dbconn.DBConn) *MigrationBuilder
type MigrationQueue ¶
type MigrationQueue []*Migration
MigrationQueue is a priority queue for Migrations. It pops off Migrations in decreasing order of priority. Implementation based upon example from documentation for container/heap.
func PlanMigrations ¶
PlanMigrations produces a priority queue of Migrations to perform based upon the database connections that have been provided.
func (MigrationQueue) Len ¶
func (mq MigrationQueue) Len() int
func (MigrationQueue) Less ¶
func (mq MigrationQueue) Less(i, j int) bool
func (*MigrationQueue) Pop ¶
func (mq *MigrationQueue) Pop() any
func (*MigrationQueue) Push ¶
func (mq *MigrationQueue) Push(x any)
func (MigrationQueue) Swap ¶
func (mq MigrationQueue) Swap(i, j int)
func (*MigrationQueue) UpdatePrioritiesByDependencyCount ¶
func (mq *MigrationQueue) UpdatePrioritiesByDependencyCount()
UpdatePrioritiesByDependencyCount updates the priority values of Migrations in the MigrationQueue to 2^(h-1), where h is the max distance from another Migration in terms of dependencies. For example, consider the following chain of dependencies:
A <- depends - B <- depends - C <- depends - D
`A` would have a priority of 8 (2^3), `B` would have 4, `C` would have 2, and `D` would have 1.
A Migration that is childless and has no dependencies retains the default priority of 0.