Skip to content

Amasterr/go-migration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

migrationgen

migrationgen is a reusable Go package for generating versioned SQL migrations from GORM models.

Install

go get github.com/Amasterr/go-migration@latest

Usage

package main

import (
	gomigration "github.com/Amasterr/go-migration"
)

func main() {
	models := []any{
		&User{},
		&Order{},
	}

	// Sync snapshot only (no SQL files generated)
	statePath, err := gomigration.SyncSchemaState(models, "./database/migrations/main", "")
	if err != nil {
		panic(err)
	}
	_ = statePath

	// Generate migration SQL from snapshot diff
	result, err := gomigration.MakeMigrations(models, "./database/migrations/main", "add_order_index", "")
	if err != nil {
		panic(err)
	}
	if !result.Changed {
		println("No changes detected.")
		return
	}
	println(result.UpPath)
	println(result.DownPath)
}

Release from This Monorepo

If this package is developed inside a monorepo, you can split and push it to its own GitHub repository:

# from monorepo root
git subtree split --prefix=pkg/migrationgen -b migrationgen-release
git push git@github.com:Amasterr/go-migration.git migrationgen-release:main

Then tag and push a release:

git clone git@github.com:Amasterr/go-migration.git
cd go-migration
git tag v0.1.3
git push origin v0.1.3

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages