mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-04 00:10:25 +08:00
refactor: 新增base.Repo与base.App,重构repo与app层代码
This commit is contained in:
@@ -48,7 +48,9 @@ func (d *Db) Dbs(rc *req.Ctx) {
|
||||
}
|
||||
|
||||
queryCond.TagIds = tagIds
|
||||
rc.ResData = d.DbApp.GetPageList(queryCond, page, new([]vo.SelectDataDbVO))
|
||||
res, err := d.DbApp.GetPageList(queryCond, page, new([]vo.SelectDataDbVO))
|
||||
biz.ErrIsNil(err)
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
func (d *Db) DbTags(rc *req.Ctx) {
|
||||
@@ -62,7 +64,7 @@ func (d *Db) Save(rc *req.Ctx) {
|
||||
rc.ReqParam = form
|
||||
|
||||
db.SetBaseInfo(rc.LoginAccount)
|
||||
d.DbApp.Save(db)
|
||||
biz.ErrIsNil(d.DbApp.Save(db))
|
||||
}
|
||||
|
||||
func (d *Db) DeleteDb(rc *req.Ctx) {
|
||||
@@ -81,23 +83,31 @@ func (d *Db) DeleteDb(rc *req.Ctx) {
|
||||
}
|
||||
|
||||
func (d *Db) getDbConnection(g *gin.Context) *application.DbConnection {
|
||||
return d.DbApp.GetDbConnection(getDbId(g), getDbName(g))
|
||||
dc, err := d.DbApp.GetDbConnection(getDbId(g), getDbName(g))
|
||||
biz.ErrIsNil(err)
|
||||
return dc
|
||||
}
|
||||
|
||||
func (d *Db) TableInfos(rc *req.Ctx) {
|
||||
rc.ResData = d.getDbConnection(rc.GinCtx).GetMeta().GetTableInfos()
|
||||
res, err := d.getDbConnection(rc.GinCtx).GetMeta().GetTableInfos()
|
||||
biz.ErrIsNilAppendErr(err, "获取表信息失败: %s")
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
func (d *Db) TableIndex(rc *req.Ctx) {
|
||||
tn := rc.GinCtx.Query("tableName")
|
||||
biz.NotEmpty(tn, "tableName不能为空")
|
||||
rc.ResData = d.getDbConnection(rc.GinCtx).GetMeta().GetTableIndex(tn)
|
||||
res, err := d.getDbConnection(rc.GinCtx).GetMeta().GetTableIndex(tn)
|
||||
biz.ErrIsNilAppendErr(err, "获取表索引信息失败: %s")
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
func (d *Db) GetCreateTableDdl(rc *req.Ctx) {
|
||||
tn := rc.GinCtx.Query("tableName")
|
||||
biz.NotEmpty(tn, "tableName不能为空")
|
||||
rc.ResData = d.getDbConnection(rc.GinCtx).GetMeta().GetCreateTableDdl(tn)
|
||||
res, err := d.getDbConnection(rc.GinCtx).GetMeta().GetCreateTableDdl(tn)
|
||||
biz.ErrIsNilAppendErr(err, "获取表ddl失败: %s")
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
func (d *Db) ExecSql(rc *req.Ctx) {
|
||||
@@ -106,7 +116,8 @@ func (d *Db) ExecSql(rc *req.Ctx) {
|
||||
ginx.BindJsonAndValid(g, form)
|
||||
|
||||
dbId := getDbId(g)
|
||||
dbConn := d.DbApp.GetDbConnection(dbId, form.Db)
|
||||
dbConn, err := d.DbApp.GetDbConnection(dbId, form.Db)
|
||||
biz.ErrIsNil(err)
|
||||
biz.ErrIsNilAppendErr(d.TagApp.CanAccess(rc.LoginAccount.Id, dbConn.Info.TagPath), "%s")
|
||||
|
||||
rc.ReqParam = fmt.Sprintf("%s\n-> %s", dbConn.Info.GetLogDesc(), form.Sql)
|
||||
@@ -177,7 +188,8 @@ func (d *Db) ExecSqlFile(rc *req.Ctx) {
|
||||
dbName := getDbName(g)
|
||||
clientId := g.Query("clientId")
|
||||
|
||||
dbConn := d.DbApp.GetDbConnection(dbId, dbName)
|
||||
dbConn, err := d.DbApp.GetDbConnection(dbId, dbName)
|
||||
biz.ErrIsNil(err)
|
||||
biz.ErrIsNilAppendErr(d.TagApp.CanAccess(rc.LoginAccount.Id, dbConn.Info.TagPath), "%s")
|
||||
rc.ReqParam = fmt.Sprintf("filename: %s -> %s", filename, dbConn.Info.GetLogDesc())
|
||||
|
||||
@@ -244,7 +256,8 @@ func (d *Db) ExecSqlFile(rc *req.Ctx) {
|
||||
if !ok {
|
||||
logx.Warnf("sql解析失败: %s", sql)
|
||||
}
|
||||
dbConn = d.DbApp.GetDbConnection(dbId, stmtUse.DBName.String())
|
||||
dbConn, err = d.DbApp.GetDbConnection(dbId, stmtUse.DBName.String())
|
||||
biz.ErrIsNil(err)
|
||||
biz.ErrIsNilAppendErr(d.TagApp.CanAccess(rc.LoginAccount.Id, dbConn.Info.TagPath), "%s")
|
||||
execReq.DbConn = dbConn
|
||||
}
|
||||
@@ -282,7 +295,8 @@ func (d *Db) DumpSql(rc *req.Ctx) {
|
||||
// 是否需要导出数据
|
||||
needData := dumpType == "2" || dumpType == "3"
|
||||
|
||||
db := d.DbApp.GetById(dbId)
|
||||
db, err := d.DbApp.GetById(new(entity.Db), dbId)
|
||||
biz.ErrIsNil(err, "该数据库不存在")
|
||||
biz.ErrIsNilAppendErr(d.TagApp.CanAccess(rc.LoginAccount.Id, db.TagPath), "%s")
|
||||
|
||||
now := time.Now()
|
||||
@@ -320,7 +334,8 @@ func (d *Db) DumpSql(rc *req.Ctx) {
|
||||
}
|
||||
|
||||
func (d *Db) dumpDb(writer *gzipWriter, dbId uint64, dbName string, tables []string, needStruct bool, needData bool) {
|
||||
dbConn := d.DbApp.GetDbConnection(dbId, dbName)
|
||||
dbConn, err := d.DbApp.GetDbConnection(dbId, dbName)
|
||||
biz.ErrIsNil(err)
|
||||
writer.WriteString("\n-- ----------------------------")
|
||||
writer.WriteString("\n-- 导出平台: mayfly-go")
|
||||
writer.WriteString(fmt.Sprintf("\n-- 导出时间: %s ", time.Now().Format("2006-01-02 15:04:05")))
|
||||
@@ -332,7 +347,8 @@ func (d *Db) dumpDb(writer *gzipWriter, dbId uint64, dbName string, tables []str
|
||||
|
||||
dbMeta := dbConn.GetMeta()
|
||||
if len(tables) == 0 {
|
||||
ti := dbMeta.GetTableInfos()
|
||||
ti, err := dbMeta.GetTableInfos()
|
||||
biz.ErrIsNil(err)
|
||||
tables = make([]string, len(ti))
|
||||
for i, table := range ti {
|
||||
tables[i] = table.TableName
|
||||
@@ -345,7 +361,9 @@ func (d *Db) dumpDb(writer *gzipWriter, dbId uint64, dbName string, tables []str
|
||||
if needStruct {
|
||||
writer.WriteString(fmt.Sprintf("\n-- ----------------------------\n-- 表结构: %s \n-- ----------------------------\n", table))
|
||||
writer.WriteString(fmt.Sprintf("DROP TABLE IF EXISTS %s;\n", quotedTable))
|
||||
writer.WriteString(dbMeta.GetCreateTableDdl(table) + "\n")
|
||||
ddl, err := dbMeta.GetCreateTableDdl(table)
|
||||
biz.ErrIsNil(err)
|
||||
writer.WriteString(ddl + "\n")
|
||||
}
|
||||
if !needData {
|
||||
continue
|
||||
@@ -380,7 +398,9 @@ func (d *Db) dumpDb(writer *gzipWriter, dbId uint64, dbName string, tables []str
|
||||
// @router /api/db/:dbId/t-metadata [get]
|
||||
func (d *Db) TableMA(rc *req.Ctx) {
|
||||
dbi := d.getDbConnection(rc.GinCtx)
|
||||
rc.ResData = dbi.GetMeta().GetTables()
|
||||
res, err := dbi.GetMeta().GetTables()
|
||||
biz.ErrIsNilAppendErr(err, "获取表基础信息失败: %s")
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
// @router /api/db/:dbId/c-metadata [get]
|
||||
@@ -390,7 +410,9 @@ func (d *Db) ColumnMA(rc *req.Ctx) {
|
||||
biz.NotEmpty(tn, "tableName不能为空")
|
||||
|
||||
dbi := d.getDbConnection(rc.GinCtx)
|
||||
rc.ResData = dbi.GetMeta().GetColumns(tn)
|
||||
res, err := dbi.GetMeta().GetColumns(tn)
|
||||
biz.ErrIsNilAppendErr(err, "获取数据库列信息失败: %s")
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
// @router /api/db/:dbId/hint-tables [get]
|
||||
@@ -399,7 +421,8 @@ func (d *Db) HintTables(rc *req.Ctx) {
|
||||
|
||||
dm := dbi.GetMeta()
|
||||
// 获取所有表
|
||||
tables := dm.GetTables()
|
||||
tables, err := dm.GetTables()
|
||||
biz.ErrIsNil(err)
|
||||
tableNames := make([]string, 0)
|
||||
for _, v := range tables {
|
||||
tableNames = append(tableNames, v.TableName)
|
||||
@@ -414,7 +437,8 @@ func (d *Db) HintTables(rc *req.Ctx) {
|
||||
}
|
||||
|
||||
// 获取所有表下的所有列信息
|
||||
columnMds := dm.GetColumns(tableNames...)
|
||||
columnMds, err := dm.GetColumns(tableNames...)
|
||||
biz.ErrIsNil(err)
|
||||
for _, v := range columnMds {
|
||||
tName := v.TableName
|
||||
if res[tName] == nil {
|
||||
@@ -481,8 +505,7 @@ func (d *Db) DeleteSql(rc *req.Ctx) {
|
||||
dbSql.Name = rc.GinCtx.Query("name")
|
||||
dbSql.Db = rc.GinCtx.Query("db")
|
||||
|
||||
gormx.DeleteByCondition(dbSql)
|
||||
|
||||
biz.ErrIsNil(gormx.DeleteBy(dbSql))
|
||||
}
|
||||
|
||||
// @router /api/db/:dbId/sql [get]
|
||||
|
||||
@@ -3,6 +3,7 @@ package api
|
||||
import (
|
||||
"mayfly-go/internal/db/application"
|
||||
"mayfly-go/internal/db/domain/entity"
|
||||
"mayfly-go/pkg/biz"
|
||||
"mayfly-go/pkg/ginx"
|
||||
"mayfly-go/pkg/req"
|
||||
)
|
||||
@@ -14,5 +15,7 @@ type DbSqlExec struct {
|
||||
func (d *DbSqlExec) DbSqlExecs(rc *req.Ctx) {
|
||||
queryCond, page := ginx.BindQueryAndPage(rc.GinCtx, new(entity.DbSqlExecQuery))
|
||||
queryCond.CreatorId = rc.LoginAccount.Id
|
||||
rc.ResData = d.DbSqlExecApp.GetPageList(queryCond, page, new([]entity.DbSqlExec))
|
||||
res, err := d.DbSqlExecApp.GetPageList(queryCond, page, new([]entity.DbSqlExec))
|
||||
biz.ErrIsNil(err)
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
@@ -24,7 +24,9 @@ type Instance struct {
|
||||
// @router /api/instances [get]
|
||||
func (d *Instance) Instances(rc *req.Ctx) {
|
||||
queryCond, page := ginx.BindQueryAndPage[*entity.InstanceQuery](rc.GinCtx, new(entity.InstanceQuery))
|
||||
rc.ResData = d.InstanceApp.GetPageList(queryCond, page, new([]vo.SelectDataInstanceVO))
|
||||
res, err := d.InstanceApp.GetPageList(queryCond, page, new([]vo.SelectDataInstanceVO))
|
||||
biz.ErrIsNil(err)
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
// SaveInstance 保存数据库实例信息
|
||||
@@ -43,15 +45,15 @@ func (d *Instance) SaveInstance(rc *req.Ctx) {
|
||||
rc.ReqParam = form
|
||||
|
||||
instance.SetBaseInfo(rc.LoginAccount)
|
||||
d.InstanceApp.Save(instance)
|
||||
biz.ErrIsNil(d.InstanceApp.Save(instance))
|
||||
}
|
||||
|
||||
// GetInstance 获取数据库实例密码,由于数据库是加密存储,故提供该接口展示原文密码
|
||||
// @router /api/instances/:instance [GET]
|
||||
func (d *Instance) GetInstance(rc *req.Ctx) {
|
||||
dbId := getInstanceId(rc.GinCtx)
|
||||
dbEntity := d.InstanceApp.GetById(dbId)
|
||||
biz.IsTrue(dbEntity != nil, "获取数据库实例错误")
|
||||
dbEntity, err := d.InstanceApp.GetById(new(entity.Instance), dbId)
|
||||
biz.ErrIsNil(err, "获取数据库实例错误")
|
||||
dbEntity.Password = ""
|
||||
rc.ResData = dbEntity
|
||||
}
|
||||
@@ -60,8 +62,8 @@ func (d *Instance) GetInstance(rc *req.Ctx) {
|
||||
// @router /api/instances/:instance/pwd [GET]
|
||||
func (d *Instance) GetInstancePwd(rc *req.Ctx) {
|
||||
instanceId := getInstanceId(rc.GinCtx)
|
||||
instanceEntity := d.InstanceApp.GetById(instanceId, "Password")
|
||||
biz.IsTrue(instanceEntity != nil, "获取数据库实例错误")
|
||||
instanceEntity, err := d.InstanceApp.GetById(new(entity.Instance), instanceId, "Password")
|
||||
biz.ErrIsNil(err, "获取数据库实例错误")
|
||||
instanceEntity.PwdDecrypt()
|
||||
rc.ResData = instanceEntity.Password
|
||||
}
|
||||
@@ -78,8 +80,8 @@ func (d *Instance) DeleteInstance(rc *req.Ctx) {
|
||||
biz.ErrIsNilAppendErr(err, "string类型转换为int异常: %s")
|
||||
instanceId := uint64(value)
|
||||
if d.DbApp.Count(&entity.DbQuery{InstanceId: instanceId}) != 0 {
|
||||
instance := d.InstanceApp.GetById(instanceId, "name")
|
||||
biz.NotNil(instance, "获取数据库实例错误,数据库实例ID为:%d", instance.Id)
|
||||
instance, err := d.InstanceApp.GetById(new(entity.Instance), instanceId, "name")
|
||||
biz.ErrIsNil(err, "获取数据库实例错误,数据库实例ID为: %d", instance.Id)
|
||||
biz.IsTrue(false, "不能删除数据库实例【%s】,请先删除其关联的数据库资源。", instance.Name)
|
||||
}
|
||||
d.InstanceApp.Delete(instanceId)
|
||||
@@ -89,10 +91,12 @@ func (d *Instance) DeleteInstance(rc *req.Ctx) {
|
||||
// 获取数据库实例的所有数据库名
|
||||
func (d *Instance) GetDatabaseNames(rc *req.Ctx) {
|
||||
instanceId := getInstanceId(rc.GinCtx)
|
||||
instance := d.InstanceApp.GetById(instanceId, "Password")
|
||||
biz.IsTrue(instance != nil, "获取数据库实例错误")
|
||||
instance, err := d.InstanceApp.GetById(new(entity.Instance), instanceId, "Password")
|
||||
biz.ErrIsNil(err, "获取数据库实例错误")
|
||||
instance.PwdDecrypt()
|
||||
rc.ResData = d.InstanceApp.GetDatabases(instance)
|
||||
res, err := d.InstanceApp.GetDatabases(instance)
|
||||
biz.ErrIsNil(err)
|
||||
rc.ResData = res
|
||||
}
|
||||
|
||||
func getInstanceId(g *gin.Context) uint64 {
|
||||
|
||||
Reference in New Issue
Block a user