2021-09-28 11:47:19 +08:00
|
|
|
|
package tenant
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
model2 "SciencesServer/app/common/model"
|
|
|
|
|
|
|
|
|
|
"SciencesServer/config"
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Sub struct{}
|
|
|
|
|
|
|
|
|
|
type SubHandle func() *Sub
|
|
|
|
|
|
|
|
|
|
// database 数据表
|
|
|
|
|
func (c *Sub) database(key string) string {
|
|
|
|
|
return model2.SubDatabase + "_" + key
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// sync 同步数据
|
|
|
|
|
func (c *Sub) sync(tx *gorm.DB, database string) error {
|
|
|
|
|
// TODO:生成租户对应数据库,并生成对应数据表
|
|
|
|
|
err := tx.Exec(fmt.Sprintf("CREATE DATABASE %s;", database)).Error
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 使用生成后的数据库
|
|
|
|
|
if err = tx.Exec(fmt.Sprintf("use %s;", database)).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
iModels := []model2.IModel{}
|
|
|
|
|
|
|
|
|
|
for _, v := range iModels {
|
|
|
|
|
if err = tx.Migrator().CreateTable(v); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 重新使用默认的数据库
|
2021-12-28 10:38:02 +08:00
|
|
|
|
tx.Exec(fmt.Sprintf("use %s;", config.EngineInfo.Engines.Mysql.Database))
|
2021-09-28 11:47:19 +08:00
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|