# HG changeset patch
# User Christophe de Vienne <christophe@cdevienne.info>
# Date 1600353774 -7200
#      Thu Sep 17 16:42:54 2020 +0200
# Node ID 0ebc121e41cae9c86ca4f9b1d0d83efb6d54ec90
# Parent  2f75d76afdfa28f0fbb7e6aa10b234a93aa2698c
move the migration source to the migration package so it is accessible to packages outside cmd

diff --git a/templates/server/cmdMigrate.gotmpl b/templates/server/cmdMigrate.gotmpl
--- a/templates/server/cmdMigrate.gotmpl
+++ b/templates/server/cmdMigrate.gotmpl
@@ -10,17 +10,6 @@
 	"{{ joinFilePath .TargetImportPath "migration" }}"
 )
 
-func initMigrationSource() source.Driver {
-	s := bindata.Resource(migration.AssetNames(), migration.Asset)
-	source, err := bindata.WithInstance(s)
-	if err != nil {
-		panic(err)
-	}
-	return source
-}
-
-var migrationSource = initMigrationSource()
-
 // NewMigrateCmd instanciates a MigrateCmd
 func NewMigrateCmd(dbOptions *database.Options, loggingOptions *orusapi.LoggingOptions) *MigrateCmd {
 	return &MigrateCmd{
@@ -39,7 +28,7 @@
 func (cmd *MigrateCmd) Execute([]string) error {
 	cmd.log.SetMinLoggingLevel(zerolog.InfoLevel)
 	log := cmd.log.Logger()
-	m, err := database.NewMigrate(cmd.db.DSN, migrationSource)
+	m, err := database.NewMigrate(cmd.db.DSN, migration.Source)
 	if err != nil {
 		return fmt.Errorf("failed to init migration engine: %s", err)
 	}
diff --git a/templates/server/cmdServe.gotmpl b/templates/server/cmdServe.gotmpl
--- a/templates/server/cmdServe.gotmpl
+++ b/templates/server/cmdServe.gotmpl
@@ -41,11 +41,11 @@
 // Execute setup a server and runs it
 func (cmd *ServeCmd) Execute([]string) error {
 	if cmd.AutoMigrate {
-		if err := database.AutoMigrate(DatabaseOptions.DSN, migrationSource, Logger); err != nil {
+		if err := database.AutoMigrate(DatabaseOptions.DSN, migration.Source, Logger); err != nil {
 			return err
 		}
 	} else {
-		if err := database.IsUptodate(DatabaseOptions.DSN, migrationSource); err != nil {
+		if err := database.IsUptodate(DatabaseOptions.DSN, migration.Source); err != nil {
 			return err
 		}
 	}
diff --git a/templates/server/migration.gotmpl b/templates/server/migration.gotmpl
--- a/templates/server/migration.gotmpl
+++ b/templates/server/migration.gotmpl
@@ -2,5 +2,21 @@
 
 package migration
 
+import (
+	"github.com/golang-migrate/migrate/v4/source"
+	bindata "github.com/golang-migrate/migrate/v4/source/go_bindata"
+)
+
 //go:generate go-bindata -pkg migration -prefix scripts scripts
 //go:generate sed -i "1s;^;// Code generated by go-bindata. DO NOT EDIT.\\n\\n;" bindata.go
+
+func initSource() source.Driver {
+	s := bindata.Resource(AssetNames(), Asset)
+	source, err := bindata.WithInstance(s)
+	if err != nil {
+		panic(err)
+	}
+	return source
+}
+
+var Source = initSource()