diff --git a/mayfly_go_web/package.json b/mayfly_go_web/package.json
index c4da2988..5eb1ba9b 100644
--- a/mayfly_go_web/package.json
+++ b/mayfly_go_web/package.json
@@ -25,7 +25,6 @@
"sql-formatter": "^2.3.3",
"vue": "^3.0.5",
"vue-router": "^4.0.2",
- "vue3-json-editor": "^1.1.3",
"vuex": "^4.0.0-rc.2",
"xterm": "^4.9.0",
"xterm-addon-fit": "^0.4.0"
diff --git a/mayfly_go_web/src/views/ops/db/SqlExec.vue b/mayfly_go_web/src/views/ops/db/SqlExec.vue
index 12e31760..d608d4a4 100644
--- a/mayfly_go_web/src/views/ops/db/SqlExec.vue
+++ b/mayfly_go_web/src/views/ops/db/SqlExec.vue
@@ -29,11 +29,8 @@
格式化 -->
- 保存
-
-
-
- sql脚本执行
+ sql脚本执行
+
+
+
+
+ {{ item }}
+
+
+
+ 保存
+ 删除
+
350) {
+ if (flexWidth > 500) {
// 设置最大宽度
- flexWidth = 350;
+ flexWidth = 500;
}
return flexWidth + 'px';
};
@@ -341,13 +360,6 @@ export default defineComponent({
return selectSql;
};
- const saveSql = async () => {
- notEmpty(state.sql, 'sql内容不能为空');
- notNull(state.dbId, '请先选择数据库');
- await dbApi.saveSql.request({ id: state.dbId, sql: state.sql, type: 1 });
- ElMessage.success('保存成功');
- };
-
/**
* 更改数据库事件
*/
@@ -373,13 +385,72 @@ export default defineComponent({
state.cmOptions.hintOptions.tables = res;
});
- dbApi.getSql.request({ id, type: 1 }).then((res) => {
+ getSqlNames();
+ };
+
+ const changeSqlTemplate = () => {
+ getUserSql();
+ };
+
+ const getUserSql = () => {
+ notNull(state.dbId, '请先选择数据库');
+ dbApi.getSql.request({ id: state.dbId, type: 1, name: state.sqlName }).then((res) => {
if (res) {
state.sql = res.sql;
+ } else {
+ state.sql = '';
}
});
};
+ const getSqlNames = () => {
+ dbApi.getSqlNames
+ .request({
+ id: state.dbId,
+ })
+ .then((res) => {
+ if (res && res.length > 0) {
+ state.sqlNames = res.map((r: any) => r.name);
+ state.sqlName = state.sqlNames[0];
+ } else {
+ state.sqlNames = ['default'] as any;
+ state.sqlName = 'default';
+ }
+
+ getUserSql();
+ });
+ };
+
+ const saveSql = async () => {
+ notEmpty(state.sql, 'sql内容不能为空');
+ notNull(state.dbId, '请先选择数据库');
+ await dbApi.saveSql.request({ id: state.dbId, sql: state.sql, type: 1, name: state.sqlName });
+ ElMessage.success('保存成功');
+
+ dbApi.getSqlNames
+ .request({
+ id: state.dbId,
+ })
+ .then((res) => {
+ if (res) {
+ state.sqlNames = res.map((r: any) => r.name);
+ }
+ });
+ };
+
+ const deleteSql = async () => {
+ try {
+ await ElMessageBox.confirm(`确定删除【${state.sqlName}】该SQL模板?`, '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ });
+ await dbApi.deleteDbSql.request({ id: state.dbId, name: state.sqlName });
+ ElMessage.success('删除成功');
+ getSqlNames();
+ } catch (err) {}
+ };
+
// 清空数据库事件
const clearDb = () => {
state.tableName = '';
@@ -466,6 +537,8 @@ export default defineComponent({
getUploadSqlFileUrl,
execSqlFileSuccess,
flexColumnWidth,
+ changeSqlTemplate,
+ deleteSql,
saveSql,
changeDb,
clearDb,
diff --git a/mayfly_go_web/src/views/ops/db/api.ts b/mayfly_go_web/src/views/ops/db/api.ts
index f2810651..3c7173a3 100644
--- a/mayfly_go_web/src/views/ops/db/api.ts
+++ b/mayfly_go_web/src/views/ops/db/api.ts
@@ -17,14 +17,7 @@ export const dbApi = {
saveSql: Api.create("/dbs/{id}/sql", 'post'),
// 获取保存的sql
getSql: Api.create("/dbs/{id}/sql", 'get'),
- lsFile: Api.create("/devops/machines/files/{fileId}/ls", 'get'),
- rmFile: Api.create("/devops/machines/files/{fileId}/rm", 'delete'),
- uploadFile: Api.create("/devops/machines/files/upload", 'post'),
- fileContent: Api.create("/devops/machines/files/{fileId}/cat", 'get'),
- // 修改文件内容
- updateFileContent: Api.create("/devops/machines/files/{id}", 'put'),
- // 添加文件or目录
- addConf: Api.create("/devops/machines/{machineId}/files", 'post'),
- // 删除配置的文件or目录
- delConf: Api.create("/devops/machines/files/{id}", 'delete'),
+ // 获取保存的sql names
+ getSqlNames: Api.create("/dbs/{id}/sql-names", 'get'),
+ deleteDbSql: Api.create("/dbs/{id}/sql", 'delete'),
}
\ No newline at end of file
diff --git a/mayfly_go_web/yarn.lock b/mayfly_go_web/yarn.lock
index 27e8cad3..671c17d9 100644
--- a/mayfly_go_web/yarn.lock
+++ b/mayfly_go_web/yarn.lock
@@ -107,11 +107,14 @@
resolved "https://registry.npmmirror.com/@types/json-schema/download/@types/json-schema-7.0.9.tgz?cache=0&sync_timestamp=1637266073261&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
integrity sha1-l+3JA36gw4WFMgsolk3eOznkZg0=
+<<<<<<< HEAD
"@types/lodash@^4.14.178":
version "4.14.178"
resolved "https://registry.npmmirror.com/@types/lodash/download/@types/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8"
integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==
+=======
+>>>>>>> master
"@types/node@^15.6.0":
version "15.14.9"
resolved "https://registry.npmmirror.com/@types/node/download/@types/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa"
diff --git a/server/devops/api/db.go b/server/devops/api/db.go
index e93946db..559b58cd 100644
--- a/server/devops/api/db.go
+++ b/server/devops/api/db.go
@@ -49,7 +49,7 @@ func (d *Db) Save(rc *ctx.ReqCtx) {
}
func (d *Db) DeleteDb(rc *ctx.ReqCtx) {
- d.DbApp.Delete(uint64(ginx.PathParamInt(rc.GinCtx, "id")))
+ d.DbApp.Delete(GetDbId(rc.GinCtx))
}
func (d *Db) TableInfos(rc *ctx.ReqCtx) {
@@ -202,7 +202,7 @@ func (d *Db) SaveSql(rc *ctx.ReqCtx) {
biz.ErrIsNil(err, "该数据库信息不存在")
// 获取用于是否有该dbsql的保存记录,有则更改,否则新增
- dbSql := &entity.DbSql{Type: dbSqlForm.Type, DbId: dbId}
+ dbSql := &entity.DbSql{Type: dbSqlForm.Type, DbId: dbId, Name: dbSqlForm.Name}
dbSql.CreatorId = account.Id
e := model.GetBy(dbSql)
@@ -216,11 +216,34 @@ func (d *Db) SaveSql(rc *ctx.ReqCtx) {
}
}
-// @router /api/db/:dbId/sql [get]
-func (d *Db) GetSql(rc *ctx.ReqCtx) {
+// 获取所有保存的sql names
+func (d *Db) GetSqlNames(rc *ctx.ReqCtx) {
// 获取用于是否有该dbsql的保存记录,有则更改,否则新增
dbSql := &entity.DbSql{Type: 1, DbId: GetDbId(rc.GinCtx)}
dbSql.CreatorId = rc.LoginAccount.Id
+ var sqls []entity.DbSql
+ model.ListBy(dbSql, &sqls, "id", "name")
+
+ rc.ResData = sqls
+}
+
+// 删除保存的sql
+func (d *Db) DeleteSql(rc *ctx.ReqCtx) {
+ dbSql := &entity.DbSql{Type: 1, DbId: GetDbId(rc.GinCtx)}
+ dbSql.CreatorId = rc.LoginAccount.Id
+ dbSql.Name = rc.GinCtx.Query("name")
+
+ model.DeleteByCondition(dbSql)
+
+}
+
+// @router /api/db/:dbId/sql [get]
+func (d *Db) GetSql(rc *ctx.ReqCtx) {
+ // 根据创建者id, 数据库id,以及sql模板名称查询保存的sql信息
+ dbSql := &entity.DbSql{Type: 1, DbId: GetDbId(rc.GinCtx)}
+ dbSql.CreatorId = rc.LoginAccount.Id
+ dbSql.Name = rc.GinCtx.Query("name")
+
e := model.GetBy(dbSql)
if e != nil {
return
diff --git a/server/devops/api/form/form.go b/server/devops/api/form/form.go
index 2f8ad371..e4c70857 100644
--- a/server/devops/api/form/form.go
+++ b/server/devops/api/form/form.go
@@ -38,6 +38,7 @@ type MachineScriptForm struct {
}
type DbSqlSaveForm struct {
+ Name string
Sql string `binding:"required"`
Type int `binding:"required"`
}
diff --git a/server/devops/domain/entity/db_sql.go b/server/devops/domain/entity/db_sql.go
index e390b108..09c964b7 100644
--- a/server/devops/domain/entity/db_sql.go
+++ b/server/devops/domain/entity/db_sql.go
@@ -7,7 +7,8 @@ import (
type DbSql struct {
model.Model `orm:"-"`
- DbId uint64 `json:"db_id"`
+ DbId uint64 `json:"dbId"`
Type int `json:"type"` // 类型
Sql string `json:"sql"`
+ Name string `json:"name"`
}
diff --git a/server/devops/router/db.go b/server/devops/router/db.go
index ca035431..ef46befa 100644
--- a/server/devops/router/db.go
+++ b/server/devops/router/db.go
@@ -29,7 +29,7 @@ func InitDbRouter(router *gin.RouterGroup) {
})
deleteDb := ctx.NewLogInfo("删除数据库信息")
- db.DELETE(":id", func(c *gin.Context) {
+ db.DELETE(":dbId", func(c *gin.Context) {
ctx.NewReqCtxWithGin(c).
WithLog(deleteDb).
Handle(d.DeleteDb)
@@ -65,10 +65,13 @@ func InitDbRouter(router *gin.RouterGroup) {
db.GET(":dbId/c-metadata", func(c *gin.Context) {
ctx.NewReqCtxWithGin(c).Handle(d.ColumnMA)
})
+
db.GET(":dbId/hint-tables", func(c *gin.Context) {
ctx.NewReqCtxWithGin(c).Handle(d.HintTables)
})
+ /** db sql相关接口 */
+
db.POST(":dbId/sql", func(c *gin.Context) {
rc := ctx.NewReqCtxWithGin(c)
rc.Handle(d.SaveSql)
@@ -77,5 +80,13 @@ func InitDbRouter(router *gin.RouterGroup) {
db.GET(":dbId/sql", func(c *gin.Context) {
ctx.NewReqCtxWithGin(c).Handle(d.GetSql)
})
+
+ db.DELETE(":dbId/sql", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).Handle(d.DeleteSql)
+ })
+
+ db.GET(":dbId/sql-names", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).Handle(d.GetSqlNames)
+ })
}
}
diff --git a/server/mayfly-go.sql b/server/mayfly-go.sql
index ebf6eece..0b0c4824 100644
--- a/server/mayfly-go.sql
+++ b/server/mayfly-go.sql
@@ -58,6 +58,7 @@ DROP TABLE IF EXISTS `t_db_sql`;
CREATE TABLE `t_db_sql` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`db_id` bigint(20) NOT NULL COMMENT '数据库id',
+ `name` varchar(60) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'sql模板名',
`sql` text COLLATE utf8mb4_bin,
`type` tinyint(8) NOT NULL,
`creator_id` bigint(20) NOT NULL,