package model
|
|
import (
|
"aps_crm/conf"
|
"aps_crm/pkg/logx"
|
"aps_crm/pkg/mysqlx"
|
"fmt"
|
"gorm.io/gorm"
|
)
|
|
type Mysql struct{}
|
|
func NewMysql() *Mysql {
|
return &Mysql{}
|
}
|
|
func (slf *Mysql) CreateUser(userName string, password string, database string) error {
|
db := mysqlx.GetDB()
|
err := db.Transaction(func(tx *gorm.DB) error {
|
userSql := fmt.Sprintf("create user if not exists %v@'%v' identified by '%v'", userName, conf.Conf.Mysql.Host, password)
|
privilegeSql := fmt.Sprintf("grant all privileges on %v.* to %v@'%v'", database, userName, conf.Conf.Mysql.Host)
|
flushSql := "flush privileges"
|
|
err := tx.Exec(userSql).Error
|
if err != nil {
|
logx.Errorf("create mysql-user err:%v", err)
|
return err
|
}
|
|
err = tx.Exec(privilegeSql).Error
|
if err != nil {
|
logx.Errorf("grant mysql-privileges err:%v", err)
|
return err
|
}
|
|
err = tx.Exec(flushSql).Error
|
if err != nil {
|
logx.Errorf("flush mysql-privilege err:%v", err)
|
return err
|
}
|
return nil
|
})
|
return err
|
}
|
|
func (slf *Mysql) CreateDatabase(database string) error {
|
db := mysqlx.GetDB()
|
//sql := fmt.Sprintf("create database if not exists %v default charset utf8mb4 collate utf8mb4_general_ci", database)
|
sql := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS `%s` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;", database)
|
err := db.Exec(sql).Error
|
if err != nil {
|
logx.Errorf("create database err:%v", err)
|
return err
|
}
|
return nil
|
}
|