Categorygithub.com/SharkFourSix/dsync
modulepackage
1.3.2
Repository: https://github.com/sharkfoursix/dsync.git
Documentation: pkg.go.dev

# README

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/migrations
var efs embed.FS

func DoMigrate(){
    dsn := "postgres://postgres:toor@localhost:5433/test-db"
    
    // Create a migrator
    var migrator dsync.Migrator

    // Configure a data source
	ds, err := postgresql.New(dsn, &dsync.Config{
		FileSystem: efs,
		Basepath:   BASEPATH,
		TableName:  "dsync_schema_migration",
	})

	if err != nil {
        panic(err)
	}

    // Migrate
	err = migrator.Migrate(ds)
	if err != 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

# Packages

No description provided by the author
No description provided by the author

# Functions

ExtractVersion Extract version from a migration changeset file.
HashFile Calculate file content checksum using CRC32(IEEE).
Migrate Perform a quick migration.
ParseMigration Parse migration information from file name.
SortDirectoryEntries Sorts the slice in place using the library's naming scheme.
No description provided by the author

# Constants

No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author