123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 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)
- }
- }
|