Browse Source

(+)表业务元数据增删改查接口

master
zmh 2 years ago
parent
commit
e067004bcf
  1. 154
      api/app/lib/controllers/businessMetadata/index.js
  2. 12
      api/app/lib/index.js
  3. 2
      api/app/lib/models/business_metadata_database.js
  4. 2
      api/app/lib/models/business_metadata_file.js
  5. 2
      api/app/lib/models/business_metadata_restapi.js
  6. 17
      api/app/lib/routes/businessMetadata/index.js

154
api/app/lib/controllers/businessMetadata/index.js

@ -0,0 +1,154 @@
'use strict';
const moment = require("moment/moment");
//获取表业务元数据列表
async function getBusinessMetadataDatabases(ctx) {
try {
const models = ctx.fs.dc.models;
const { catalog, limit, offset, keywords, orderBy = 'updateAt', orderDirection = 'desc', id = null } = ctx.query;
const where = { type: '表' };
if (catalog) {
where.catalog = catalog;
}
if (id) {
where.parent = id;
}
if (keywords) {
where['$or'] = [{ name: { $iLike: `%${keywords}%` } },
{ code: { $iLike: `%${keywords}%` } },
{ type: { $iLike: `%${keywords}%` } }]
}
const findObj = {
include: [{
model: models.BusinessMetadataDatabase,
include: [
{
model: models.User,
attributes: ['id', 'name', 'username'],
}]
}],
attributes: { exclude: ['catalogKey', 'createAt', 'createBy', 'updateAt'] },
where: where,
order: [[models.BusinessMetadataDatabase, orderBy, orderDirection + ' NULLS LAST']],
distinct: true
}
if (Number(limit) > 0 && Number(offset) >= 0) {
findObj.offset = Number(offset) * Number(limit);
findObj.limit = Number(limit);
}
const rslt = await models.MetadataDatabase.findAndCountAll(findObj);
let parentIds = rslt.rows.reduce((p, c) => p = p.concat(c.parent), []);
parentIds = [...new Set(parentIds)]
const parentData = await models.MetadataDatabase.findAll({
where: { id: { $in: parentIds } },
attributes: ['id', 'name'],
});
rslt.rows.map(d => {
if (d.parent) {
let data = parentData.filter(p =>
p.dataValues.id === d.parent);
if (data && data.length) {
d.dataValues.parentDataName = data[0].dataValues.name;
}
}
})
ctx.status = 200;
ctx.body = rslt;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "获取业务元数据列表失败"
}
}
}
//新建表业务元数据
async function postBusinessMetadataDatabases(ctx) {
try {
const { resourceName, resourceAbstract, resourceProvider, resourceCategory, resourceId, metadataId,
createBy, metadataDatabaseId } = ctx.request.body;
const models = ctx.fs.dc.models;
if (!resourceName || !resourceAbstract || !resourceProvider ||
!resourceCategory || !resourceId || !metadataId ||
!createBy || !metadataDatabaseId) {
ctx.body = { message: '参数不全,请重新配置' }
ctx.status = 400;
} else {
await models.BusinessMetadataDatabase.create({ createAt: moment(), updateAt: moment(), ...ctx.request.body });
ctx.body = { message: '新建业务元数据成功' }
ctx.status = 200;
}
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "新建业务元数据失败"
}
}
}
//修改表业务元数据
async function putBusinessMetadataDatabases(ctx) {
try {
const { id } = ctx.params;
const models = ctx.fs.dc.models;
let businessMetadataInfo = await models.BusinessMetadataDatabase.findOne({ where: { id } });
if (businessMetadataInfo) {
const { resourceName, resourceAbstract, resourceProvider, resourceCategory, resourceId, metadataId } = ctx.request.body;
if (!resourceName || !resourceAbstract || !resourceProvider ||
!resourceCategory || !resourceId || !metadataId) {
ctx.body = { message: '参数不全,请重新配置' }
ctx.status = 400;
} else {
await models.BusinessMetadataDatabase.update({ updateAt: moment(), ...ctx.request.body }, { where: { id: id } });
ctx.status = 200;
ctx.body = { message: '修改业务元数据成功' }
}
} else {
ctx.status = 400;
ctx.body = { message: '该业务元数据不存在' }
}
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "修改业务元数据失败"
}
}
}
//删除表业务元数据
async function delBusinessMetadataDatabases(ctx) {
const transaction = await ctx.fs.dc.orm.transaction();
try {
const models = ctx.fs.dc.models;
const { id } = ctx.params;
let businessMetadataInfo = await models.BusinessMetadataDatabase.findOne({ where: { id } });
if (businessMetadataInfo) {
await models.BusinessMetadataDatabase.destroy({
where: { id: id },
transaction
})
await transaction.commit();
ctx.status = 200;
ctx.body = { message: '删除业务元数据成功' }
} else {
ctx.status = 400;
ctx.body = { message: '该业务元数据不存在' }
}
} catch (error) {
await transaction.rollback();
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = { message: '删除业务元数据失败' }
}
}
module.exports = {
getBusinessMetadataDatabases,
postBusinessMetadataDatabases,
putBusinessMetadataDatabases,
delBusinessMetadataDatabases,
}

12
api/app/lib/index.js

@ -55,7 +55,8 @@ module.exports.models = function (dc) {
}); });
const { const {
DataSource, AcquisitionTask, Adapter, User, MetadataDatabase, MetadataFile, MetadataRestapi, AcquisitionLog, ResourceCatalog DataSource, AcquisitionTask, Adapter, User, MetadataDatabase, MetadataFile, MetadataRestapi, AcquisitionLog, ResourceCatalog,
BusinessMetadataDatabase, BusinessMetadataFile, BusinessMetadataRestapi
} = dc.models; } = dc.models;
AcquisitionTask.belongsTo(DataSource, { foreignKey: 'dataSourceId', targetKey: 'id' }); AcquisitionTask.belongsTo(DataSource, { foreignKey: 'dataSourceId', targetKey: 'id' });
@ -72,7 +73,16 @@ module.exports.models = function (dc) {
MetadataFile.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' }); MetadataFile.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' });
MetadataRestapi.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' }); MetadataRestapi.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' });
BusinessMetadataDatabase.belongsTo(MetadataDatabase, { foreignKey: 'metadataDatabaseId', targetKey: 'id' });
MetadataDatabase.hasMany(BusinessMetadataDatabase, { foreignKey: 'metadataDatabaseId', sourceKey: 'id' });
BusinessMetadataFile.belongsTo(MetadataFile, { foreignKey: 'metadataFileId', targetKey: 'id' });
MetadataFile.hasMany(BusinessMetadataFile, { foreignKey: 'metadataFileId', sourceKey: 'id' });
BusinessMetadataRestapi.belongsTo(MetadataRestapi, { foreignKey: 'metadataRestapiId', targetKey: 'id' });
MetadataRestapi.hasMany(BusinessMetadataRestapi, { foreignKey: 'metadataRestapiId', sourceKey: 'id' });
BusinessMetadataDatabase.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' });
BusinessMetadataFile.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' });
BusinessMetadataRestapi.belongsTo(User, { foreignKey: 'createBy', targetKey: 'id' });
}; };

2
api/app/lib/models/business_metadata_database.js

@ -101,7 +101,7 @@ module.exports = dc => {
field: "update_at", field: "update_at",
autoIncrement: false autoIncrement: false
}, },
metadataDatabase: { metadataDatabaseId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,

2
api/app/lib/models/business_metadata_file.js

@ -101,7 +101,7 @@ module.exports = dc => {
field: "update_at", field: "update_at",
autoIncrement: false autoIncrement: false
}, },
metadataFile: { metadataFileId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,

2
api/app/lib/models/business_metadata_restapi.js

@ -101,7 +101,7 @@ module.exports = dc => {
field: "update_at", field: "update_at",
autoIncrement: false autoIncrement: false
}, },
metadataRestapi: { metadataRestapiId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,

17
api/app/lib/routes/businessMetadata/index.js

@ -0,0 +1,17 @@
'use strict';
const businessMetadata = require('../../controllers/businessMetadata');
module.exports = function (app, router, opts) {
app.fs.api.logAttr['GET/business/metadata/databases'] = { content: '获取表业务元数据列表', visible: false };
router.get('/business/metadata/databases', businessMetadata.getBusinessMetadataDatabases);
app.fs.api.logAttr['POST/business/metadata/databases'] = { content: '新建表业务元数据', visible: true };
router.post('/business/metadata/databases', businessMetadata.postBusinessMetadataDatabases);
app.fs.api.logAttr['PUT/business/metadata/databases/:id'] = { content: '修改表业务元数据', visible: true };
router.put('/business/metadata/databases/:id', businessMetadata.putBusinessMetadataDatabases);
app.fs.api.logAttr['DEL/business/metadata/databases/:id'] = { content: '删除表业务元数据', visible: true };
router.delete('/business/metadata/databases/:id', businessMetadata.delBusinessMetadataDatabases);
};
Loading…
Cancel
Save