From 6ee995cd74081139e4981346a0e8b677b45615e3 Mon Sep 17 00:00:00 2001 From: "peng.peng" Date: Thu, 29 Jun 2023 14:47:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=EF=BC=88*=EF=BC=89=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=87=87=E9=9B=86=E8=BF=87=E6=BB=A4=E6=8E=89=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/controllers/metadataAcquisition/taskHandle.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/api/app/lib/controllers/metadataAcquisition/taskHandle.js b/api/app/lib/controllers/metadataAcquisition/taskHandle.js index 1670aba..c08e403 100644 --- a/api/app/lib/controllers/metadataAcquisition/taskHandle.js +++ b/api/app/lib/controllers/metadataAcquisition/taskHandle.js @@ -21,7 +21,13 @@ async function handleTask(app, task) { if (dataSource) { const dbOptions = createDbOptions(dataSource.config); const automate = new Automate(dbOptions, {}); - const tables = await automate.getTables(); //获取当前采集任务数据源pg库表字段索引外键数据 + const tablesOrign = await automate.getTables(); //获取当前采集任务数据源pg库表字段索引外键数据 + const tables = {} + Object.keys(tablesOrign).forEach(key => { + if (key.indexOf('_airbyte_raw') < 0) { //过滤掉临时表 后端同步的库里存在临时表(_airbyte_raw开头) + tables[key] = tablesOrign[key] + } + }) const dataToSave = { code: dataSource.config.database, name: dataSource.config.database, From 39282f3eb994577f566ba1acffd58df847cfd356 Mon Sep 17 00:00:00 2001 From: "peng.peng" Date: Thu, 29 Jun 2023 15:13:41 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=EF=BC=88*=EF=BC=89=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/controllers/homepage/index.js | 30 +++++++++++++++++- api/app/lib/index.js | 1 - ...{header-title-bg.png => headertitlebg.png} | Bin .../homePage/bigscreen/分组 13 copy(1).png | Bin 8019 -> 0 bytes .../homePage/bigscreen/分组 13 copy(2).png | Bin 7645 -> 0 bytes .../homePage/bigscreen/分组 13 copy.png | Bin 6418 -> 0 bytes .../homePage/components/public/table-card.js | 2 +- 7 files changed, 30 insertions(+), 3 deletions(-) rename web/client/assets/images/homePage/bigscreen/{header-title-bg.png => headertitlebg.png} (100%) delete mode 100644 web/client/assets/images/homePage/bigscreen/分组 13 copy(1).png delete mode 100644 web/client/assets/images/homePage/bigscreen/分组 13 copy(2).png delete mode 100644 web/client/assets/images/homePage/bigscreen/分组 13 copy.png diff --git a/api/app/lib/controllers/homepage/index.js b/api/app/lib/controllers/homepage/index.js index 84a9ae4..15b20f7 100644 --- a/api/app/lib/controllers/homepage/index.js +++ b/api/app/lib/controllers/homepage/index.js @@ -156,8 +156,36 @@ function getClusterInfo(opts) { } } +function getRestfulInfo(opts) { + return async function (ctx, next) { + const models = ctx.fs.dc.models; + try { + let todayTotal = await models.RestfulApiRecord.Count({ + where: { + visitTime: { [Op.between]: [moment().startOf('day'), moment().endOf('day')] } + } + }) + let total = await models.RestfulApiRecord.Count({ + where: { + id: { [$.gt]: 0 } + } + }) + + + ctx.status = 200; + ctx.body = { total, todayTotal }; + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { message: '查询后端同步数据库数据量总量和top5' } + } + } +} + + module.exports = { getNodeResources, getDataTotalTop5, - getClusterInfo + getClusterInfo, + getRestfulInfo } diff --git a/api/app/lib/index.js b/api/app/lib/index.js index 644fe31..6f241a1 100644 --- a/api/app/lib/index.js +++ b/api/app/lib/index.js @@ -94,7 +94,6 @@ module.exports.models = function (dc) { StandardDoc.hasMany(BusinessRule, { foreignKey: 'ruleBasis', targetKey: 'id' }); DbStatistics.belongsTo(DataSource, { foreignKey: 'sourceId', targetKey: 'id' }); - DataSource.hasMany(DbStatistics, { foreignKey: 'sourceId', sourceKey: 'id' }); RestfulApiRecord.belongsTo(RestfulApi, { foreignKey: 'restServiceId', targetKey: 'id' }); }; diff --git a/web/client/assets/images/homePage/bigscreen/header-title-bg.png b/web/client/assets/images/homePage/bigscreen/headertitlebg.png similarity index 100% rename from web/client/assets/images/homePage/bigscreen/header-title-bg.png rename to web/client/assets/images/homePage/bigscreen/headertitlebg.png diff --git a/web/client/assets/images/homePage/bigscreen/分组 13 copy(1).png b/web/client/assets/images/homePage/bigscreen/分组 13 copy(1).png deleted file mode 100644 index 8aaa039260e0f00879a271a321a937a4da9bcb32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8019 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 diff --git a/web/client/src/sections/homePage/components/public/table-card.js b/web/client/src/sections/homePage/components/public/table-card.js index ea83d8c..f2bd9df 100644 --- a/web/client/src/sections/homePage/components/public/table-card.js +++ b/web/client/src/sections/homePage/components/public/table-card.js @@ -7,7 +7,7 @@ class Box extends React.Component { const { title, height = '100%', children, bodyPaddingTop = 1, titlePaddingTop, margin, overflow } = this.props const headerbg = { - background: 'url(/assets/images/homepage/bigscreen/header-title-bg.png) no-repeat', + background: 'url(/assets/images/homepage/bigscreen/headertitlebg.png) no-repeat', backgroundSize: '100% 100%', } From 23f6f2df7ff6a3b161250414a92adb9861d61e47 Mon Sep 17 00:00:00 2001 From: "peng.peng" Date: Thu, 29 Jun 2023 16:34:22 +0800 Subject: [PATCH 3/3] =?UTF-8?q?(*)restful=20=E6=9C=8D=E5=8A=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/controllers/backups/index.js | 2 +- api/app/lib/controllers/homepage/index.js | 22 +++--- api/app/lib/models/restful_api_record.js | 94 +++++++++++------------ api/app/lib/routes/homepage/index.js | 5 +- api/sequelize-automate.config.js | 2 +- 5 files changed, 63 insertions(+), 62 deletions(-) diff --git a/api/app/lib/controllers/backups/index.js b/api/app/lib/controllers/backups/index.js index b2fa242..743e5fd 100644 --- a/api/app/lib/controllers/backups/index.js +++ b/api/app/lib/controllers/backups/index.js @@ -6,7 +6,7 @@ function getBackupsList(opts) { const models = ctx.fs.dc.models; const { page, limit, name } = ctx.query; - const Op = ctx.fs.dc.ORM.Op; + let errMsg = { message: '获取数据备份失败' } try { let searchWhere = { diff --git a/api/app/lib/controllers/homepage/index.js b/api/app/lib/controllers/homepage/index.js index 15b20f7..2eb7c6c 100644 --- a/api/app/lib/controllers/homepage/index.js +++ b/api/app/lib/controllers/homepage/index.js @@ -160,24 +160,24 @@ function getRestfulInfo(opts) { return async function (ctx, next) { const models = ctx.fs.dc.models; try { - let todayTotal = await models.RestfulApiRecord.Count({ + const Op = ctx.fs.dc.ORM.Op; + let allApis = await models.RestfulApiRecord.findAndCount({ + order: [["id", "desc"]], where: { - visitTime: { [Op.between]: [moment().startOf('day'), moment().endOf('day')] } - } - }) - let total = await models.RestfulApiRecord.Count({ - where: { - id: { [$.gt]: 0 } - } + id: { [Op.gt]: 0 } + }, + include: [ + { + model: models.RestfulApi, + }] }) - ctx.status = 200; - ctx.body = { total, todayTotal }; + ctx.body = { allApis }; } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; - ctx.body = { message: '查询后端同步数据库数据量总量和top5' } + ctx.body = { message: '获取restful统计信息失败' } } } } diff --git a/api/app/lib/models/restful_api_record.js b/api/app/lib/models/restful_api_record.js index c1470b8..146cc6f 100644 --- a/api/app/lib/models/restful_api_record.js +++ b/api/app/lib/models/restful_api_record.js @@ -3,51 +3,51 @@ 'use strict'; module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const RestfulApiRecord = sequelize.define("restfulApiRecord", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: "唯一标识", - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "t_restful_api_record_id_uindex" - }, - name: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: "接口名称", - primaryKey: false, - field: "name", - autoIncrement: false - }, - visitTime: { - type: DataTypes.DATE, - allowNull: false, - defaultValue: null, - comment: "访问时间", - primaryKey: false, - field: "visit_time", - autoIncrement: false - }, - token: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: "令牌", - primaryKey: false, - field: "token", - autoIncrement: false - }, - }, { - tableName: "t_restful_api_record", - comment: "", - indexes: [] - }); - dc.models.RestfulApiRecord = RestfulApiRecord; - return RestfulApiRecord; + const DataTypes = dc.ORM; + const sequelize = dc.orm; + const RestfulApiRecord = sequelize.define("restfulApiRecord", { + id: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: true, + field: "id", + autoIncrement: true, + unique: "t_resful_api_record_id_uindex" + }, + restServiceId: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: null, + comment: "rest服务id", + primaryKey: false, + field: "rest_service_id", + autoIncrement: false + }, + visitTime: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: null, + comment: "访问时间", + primaryKey: false, + field: "visit_time", + autoIncrement: false + }, + token: { + type: DataTypes.STRING, + allowNull: false, + defaultValue: null, + comment: "令牌", + primaryKey: false, + field: "token", + autoIncrement: false + } + }, { + tableName: "t_restful_api_record", + comment: "", + indexes: [] + }); + dc.models.RestfulApiRecord = RestfulApiRecord; + return RestfulApiRecord; }; \ No newline at end of file diff --git a/api/app/lib/routes/homepage/index.js b/api/app/lib/routes/homepage/index.js index 1b12fb6..9fd7603 100644 --- a/api/app/lib/routes/homepage/index.js +++ b/api/app/lib/routes/homepage/index.js @@ -10,8 +10,9 @@ module.exports = function (app, router, opts, AuthCode) { app.fs.api.logAttr['GET/homepage/datatotal/top5'] = { content: '获取数据总量和top5', visible: true }; router.get('/homepage/datatotal/top5', backups.getDataTotalTop5(opts)) - app.fs.api.logAttr['GET/homepage/cluters'] = { content: '获取集群资源节点信息', visible: true }; + app.fs.api.logAttr['GET/homepage/datatotal/cluters'] = { content: '获取集群资源节点信息', visible: true }; router.get('/homepage/datatotal/cluters', backups.getClusterInfo(opts)) - + app.fs.api.logAttr['GET/homepage/restful/info'] = { content: '获取restful统计信息', visible: true }; + router.get('/homepage/restful/info', backups.getRestfulInfo(opts)) }; diff --git a/api/sequelize-automate.config.js b/api/sequelize-automate.config.js index b0ae7dd..bdfad14 100644 --- a/api/sequelize-automate.config.js +++ b/api/sequelize-automate.config.js @@ -26,7 +26,7 @@ module.exports = { dir: './app/lib/models', // 指定输出 models 文件的目录 typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义 emptyDir: false, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir` - tables: ['dbStatistics'], // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性 + tables: ['t_restful_api_record'], // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性 skipTables: [], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性 tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中 ignorePrefix: ['t_',], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面