Skip to content

Repository files navigation

dsync Go Report Card

Getting Started

go get github.com/SharkFourSix/dsync

Usage

  1. Choose a data source (check in sources) or implement your own.
  2. Create a Migrator and pass the data source to the migrator
import (
"embed""testing""github.com/SharkFourSix/dsync""github.com/SharkFourSix/dsync/sources/postgresql"
)
//go:embed resources/migrationsvarefs embed.FSfuncDoMigrate(){
dsn:="postgres://postgres:toor@localhost:5433/test-db"// Create a migratorvarmigrator dsync.Migrator// Configure a data sourceds, err:=postgresql.New(dsn, &dsync.Config{
FileSystem: efs,
Basepath: BASEPATH,
TableName: "dsync_schema_migration",
})
iferr!=nil {
panic(err)
}
// Migrateerr=migrator.Migrate(ds)
iferr!=nil {
panic(err)
return
}
}

Things To Know

  • File names must use the following convention to be included when scanning:

    \d+__\w+.sql.

  • An error will be returned otherwise when the version part of the file name does not contain a number.

  • A migration script will not be included if it does not end with .sql extension

  • Migrations are only recorded in the database when successfull

  • Custom migration table name to allow different migrations for difference DB clients.

  • Supports out of order migrations

Database sources

DatabaseData sourceStatus
Postgresgithub.com/SharkFourSix/dsync/sources/postgresqlDone
MySQLgithub.com/SharkFourSix/dsync/sources/mysqlDone
SQLitegithub.com/SharkFourSix/dsync/sources/sqliteDone

TODO

  • Add logging and configuration

About

Database migration library for golang

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages