45 lines
901 B
Go
45 lines
901 B
Go
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
|
||
}
|
||
}
|
||
// 重新使用默认的数据库
|
||
tx.Exec(fmt.Sprintf("use %s;", config.EngineInfo.Engines.Mysql.Database))
|
||
|
||
return nil
|
||
}
|