68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package initialize
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
migrate "github.com/golang-migrate/migrate/v4"
|
|
migrate_mysql "github.com/golang-migrate/migrate/v4/database/mysql"
|
|
migrate_postgres "github.com/golang-migrate/migrate/v4/database/postgres"
|
|
_ "github.com/golang-migrate/migrate/v4/source/file"
|
|
_ "github.com/lib/pq"
|
|
|
|
"gitlink.org.cn/Gitlink/share-knowledge-server/global"
|
|
)
|
|
|
|
func Migrate() {
|
|
switch global.GO_CONFIG.Database.Type {
|
|
case "mysql":
|
|
MigrateSetMysql()
|
|
return
|
|
case "postgresql":
|
|
MigrateSetPostgresql()
|
|
return
|
|
default:
|
|
MigrateSetMysql()
|
|
return
|
|
}
|
|
}
|
|
|
|
func MigrateSetPostgresql() {
|
|
db, err := sql.Open("postgres", fmt.Sprintf("%s:%s@(%s:%d)/%s?sslmode=enable", global.GO_CONFIG.Database.User, global.GO_CONFIG.Database.Password, global.GO_CONFIG.Database.Host, global.GO_CONFIG.Database.Port, global.GO_CONFIG.Database.Name))
|
|
if err != nil {
|
|
global.GO_LOG.Error(fmt.Sprintf("sql.Open: %v", err))
|
|
}
|
|
driver, err := migrate_postgres.WithInstance(db, &migrate_postgres.Config{})
|
|
if err != nil {
|
|
global.GO_LOG.Error(fmt.Sprintf("migrate_postgres.WithInstance: %v", err))
|
|
}
|
|
m, err := migrate.NewWithDatabaseInstance(
|
|
"files:///migrations",
|
|
"postgres", driver)
|
|
if err != nil {
|
|
global.GO_LOG.Error(fmt.Sprintf("migrate.NewWithDatabaseInstance: %v", err))
|
|
}
|
|
m.Up()
|
|
// m.Down()
|
|
}
|
|
|
|
func MigrateSetMysql() {
|
|
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@(%s:%d)/%s?multiStatements=true", global.GO_CONFIG.Database.User, global.GO_CONFIG.Database.Password, global.GO_CONFIG.Database.Host, global.GO_CONFIG.Database.Port, global.GO_CONFIG.Database.Name))
|
|
if err != nil {
|
|
global.GO_LOG.Fatal(fmt.Sprintf("sql.Open: %v", err))
|
|
}
|
|
driver, err := migrate_mysql.WithInstance(db, &migrate_mysql.Config{})
|
|
if err != nil {
|
|
global.GO_LOG.Fatal(fmt.Sprintf("migrate_mysql.WithInstance: %v", err))
|
|
}
|
|
m, err := migrate.NewWithDatabaseInstance(
|
|
"file://migrations",
|
|
"migrate", driver)
|
|
if err != nil {
|
|
global.GO_LOG.Fatal(fmt.Sprintf("migrate.NewWithDatabaseInstance: %v", err))
|
|
}
|
|
m.Up()
|
|
// m.Down()
|
|
}
|