Files
go-gin-api/internal/render/upgrade/execute.go
T
新亮 4c37a7e6b5 feature(1.2.8): swagger 接口文档新增 Security
- 将 middleware 命名为 interceptor
- 将 deploy 命名为 deployments
- 移除 pkg/errno
- 使用 proposal 目录
- 优化代码
2021-11-28 13:25:27 +08:00

114 lines
3.1 KiB
Go

package upgrade
import (
"net/http"
"github.com/xinliangnote/go-gin-api/internal/code"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/proposal/tablesqls"
"github.com/xinliangnote/go-gin-api/pkg/errors"
)
type upgradeExecuteRequest struct {
TableName string `form:"table_name"` // 数据表
Op string `form:"op"` // 操作类型
}
func (h *handler) UpgradeExecute() core.HandlerFunc {
upgradeTableList := map[string]map[string]string{
"authorized": {
"table_sql": tablesqls.CreateAuthorizedTableSql(),
"table_data_sql": tablesqls.CreateAuthorizedTableDataSql(),
},
"authorized_api": {
"table_sql": tablesqls.CreateAuthorizedAPITableSql(),
"table_data_sql": tablesqls.CreateAuthorizedAPITableDataSql(),
},
"admin": {
"table_sql": tablesqls.CreateAdminTableSql(),
"table_data_sql": tablesqls.CreateAdminTableDataSql(),
},
"admin_menu": {
"table_sql": tablesqls.CreateAdminMenuTableSql(),
"table_data_sql": tablesqls.CreateAdminMenuTableDataSql(),
},
"menu": {
"table_sql": tablesqls.CreateMenuTableSql(),
"table_data_sql": tablesqls.CreateMenuTableDataSql(),
},
"menu_action": {
"table_sql": tablesqls.CreateMenuActionTableSql(),
"table_data_sql": tablesqls.CreateMenuActionTableDataSql(),
},
"cron_task": {
"table_sql": tablesqls.CreateCronTaskTableSql(),
"table_data_sql": "",
},
}
upgradeTableOp := map[string]bool{
"table": true,
"table_data": true,
}
return func(ctx core.Context) {
req := new(upgradeExecuteRequest)
if err := ctx.ShouldBindForm(req); err != nil {
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.ParamBindError,
code.Text(code.ParamBindError)).WithError(err),
)
return
}
outPutString := ""
db := h.db.GetDbW()
if upgradeTableList[req.TableName] == nil {
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.MySQLExecError,
code.Text(code.MySQLExecError)).WithError(errors.New("数据表不存在")),
)
return
}
if !upgradeTableOp[req.Op] {
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.MySQLExecError,
code.Text(code.MySQLExecError)).WithError(errors.New("非法操作")),
)
return
}
if req.Op == "table" {
if err := db.Exec(upgradeTableList[req.TableName]["table_sql"]).Error; err != nil {
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.MySQLExecError,
code.Text(code.MySQLExecError)+" "+err.Error()).WithError(err),
)
return
}
outPutString = "初始化 MySQL 数据表:" + req.TableName + " 成功。"
} else if req.Op == "table_data" {
if err := db.Exec(upgradeTableList[req.TableName]["table_data_sql"]).Error; err != nil {
ctx.AbortWithError(core.Error(
http.StatusBadRequest,
code.MySQLExecError,
code.Text(code.MySQLExecError)+" "+err.Error()).WithError(err),
)
return
}
outPutString = "初始化 MySQL 数据表:" + req.TableName + " 默认数据成功。"
}
ctx.Payload(outPutString)
}
}