70 lines
2.2 KiB
Go
70 lines
2.2 KiB
Go
![]() |
package migrate
|
|||
|
|
|||
|
import (
|
|||
|
"SciencesServer/app/common/migrate"
|
|||
|
"SciencesServer/serve/orm"
|
|||
|
"SciencesServer/serve/orm/logic"
|
|||
|
"fmt"
|
|||
|
"github.com/spf13/cobra"
|
|||
|
)
|
|||
|
|
|||
|
type mysql struct {
|
|||
|
host string
|
|||
|
port int
|
|||
|
database string
|
|||
|
username string
|
|||
|
password string
|
|||
|
}
|
|||
|
|
|||
|
type sqlite struct {
|
|||
|
path string
|
|||
|
name string
|
|||
|
}
|
|||
|
|
|||
|
var (
|
|||
|
Cmd = &cobra.Command{
|
|||
|
Use: "init",
|
|||
|
Short: "初始化配置",
|
|||
|
Example: "serve init -m mysql -d sciences -u root -p 123456",
|
|||
|
Run: func(cmd *cobra.Command, args []string) {
|
|||
|
run()
|
|||
|
},
|
|||
|
}
|
|||
|
mode string
|
|||
|
|
|||
|
_mysql = new(mysql)
|
|||
|
_sqlite = new(sqlite)
|
|||
|
)
|
|||
|
|
|||
|
func init() {
|
|||
|
Cmd.PersistentFlags().StringVarP(&mode, "mode", "m", "mysql", "数据引擎,支持mysql和sqlite,默认mysql")
|
|||
|
Cmd.PersistentFlags().StringVarP(&_mysql.host, "mysql_host", "H", "127.0.0.1", "主机名,默认127.0.0.1")
|
|||
|
Cmd.PersistentFlags().IntVarP(&_mysql.port, "mysql_port", "P", 3306, "端口号,默认为3306")
|
|||
|
Cmd.PersistentFlags().StringVarP(&_mysql.database, "mysql_database", "d", "", "数据库,默认为空")
|
|||
|
Cmd.PersistentFlags().StringVarP(&_mysql.username, "mysql_username", "u", "root", "用户名,默认为root")
|
|||
|
Cmd.PersistentFlags().StringVarP(&_mysql.password, "mysql_password", "p", "", "密码,默认为空")
|
|||
|
Cmd.PersistentFlags().StringVarP(&_sqlite.path, "sqlite_path", "a", "data", "Sqlite文件存放地址,默认data")
|
|||
|
Cmd.PersistentFlags().StringVarP(&_sqlite.name, "sqlite_name", "n", "app.db", "Sqlite文件存放地址,默认app.db")
|
|||
|
}
|
|||
|
|
|||
|
func run() {
|
|||
|
fmt.Println("========================\n=== 初始化项目配置 ===\n========================")
|
|||
|
|
|||
|
// 初始化数据引擎
|
|||
|
engine := orm.NewInstance(
|
|||
|
orm.WithDBMode(mode),
|
|||
|
orm.WithMysqlOption(&logic.Mysql{
|
|||
|
User: _mysql.username, Password: _mysql.password,
|
|||
|
Host: _mysql.host, Port: _mysql.port,
|
|||
|
DBName: _mysql.database, Parameters: "charset=utf8mb4,utf8&parseTime=True&loc=Local",
|
|||
|
}),
|
|||
|
orm.WithSqliteOption(&logic.Sqlite{Path: _sqlite.path, Name: _sqlite.name}),
|
|||
|
).Init()
|
|||
|
|
|||
|
fmt.Println("========================\n=== 数据引擎创建成功 ===\n========================")
|
|||
|
// 迁移数据
|
|||
|
migrate.NewInstance(migrate.WithGormDBOption(engine.Engine)).Handle()
|
|||
|
|
|||
|
fmt.Println("========================\n=== 数据初始化成功 ===\n========================")
|
|||
|
}
|