|
|
@ -167,17 +167,17 @@ async function getMetadataDatabases(ctx) { |
|
|
|
async function getMetadataFiles(ctx) { |
|
|
|
try { |
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
const { catalog, limit, offset, keywords, orderBy = 'createAt', orderDirection = 'desc' } = ctx.query; |
|
|
|
const { catalog, limit, offset, keywords, orderBy = 'updateAt', orderDirection = 'desc' } = ctx.query; |
|
|
|
const where = { catalog: catalog }; |
|
|
|
if (keywords) { |
|
|
|
where['$or'] = [{ name: { $iLike: `%${keywords}%` } }, { type: { $iLike: `%${keywords}%` } }] |
|
|
|
} |
|
|
|
const findObj = { |
|
|
|
include: [ |
|
|
|
{ |
|
|
|
model: models.User, |
|
|
|
attributes: ['id', 'name', 'username'], |
|
|
|
}, |
|
|
|
// {
|
|
|
|
// model: models.User,
|
|
|
|
// attributes: ['id', 'name', 'username'],
|
|
|
|
// },
|
|
|
|
{ |
|
|
|
model: models.TagFile, |
|
|
|
include: [{ |
|
|
@ -248,11 +248,14 @@ async function getMetadataModels(ctx) { |
|
|
|
try { |
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
const { modelTypes } = ctx.query; |
|
|
|
const rslt = await models.MetaModel.findAll({ |
|
|
|
where: { |
|
|
|
modelType: { $in: modelTypes } |
|
|
|
} |
|
|
|
}); |
|
|
|
let rslt = []; |
|
|
|
if (modelTypes) { |
|
|
|
rslt = await models.MetaModel.findAll({ |
|
|
|
where: { |
|
|
|
modelType: { $in: modelTypes.split(',') } |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
ctx.status = 200; |
|
|
|
ctx.body = rslt; |
|
|
|
} catch (error) { |
|
|
@ -307,7 +310,7 @@ async function putMetadataDatabases(ctx) { |
|
|
|
ctx.status = 400; |
|
|
|
ctx.body = { message: '该元数据名称或代码已存在' } |
|
|
|
} else { |
|
|
|
await models.MetadataDatabase.update(ctx.request.body, { where: { id: id } }); |
|
|
|
await models.MetadataDatabase.update({ updateAt: moment(), ...ctx.request.body }, { where: { id: id } }); |
|
|
|
ctx.status = 200; |
|
|
|
ctx.body = { message: '修改元数据成功' } |
|
|
|
} |
|
|
@ -544,6 +547,113 @@ async function getMetadataResourceApplications(ctx) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//新建文件元数据
|
|
|
|
async function postMetadataFiles(ctx) { |
|
|
|
try { |
|
|
|
const { name, catalog, type, size } = ctx.request.body; |
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
const postOne = await models.MetadataFile.findOne({ |
|
|
|
where: { name: name, catalog: catalog } |
|
|
|
}); |
|
|
|
if (postOne) { |
|
|
|
ctx.status = 400; |
|
|
|
ctx.body = { message: '该资源目录下元数据名称已存在' } |
|
|
|
} else { |
|
|
|
if (!name || !catalog || !type) { |
|
|
|
ctx.body = { message: '参数不全,请重新配置' } |
|
|
|
ctx.status = 400; |
|
|
|
} else { |
|
|
|
await models.MetadataFile.create({ createAt: 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 putMetadataFiles(ctx) { |
|
|
|
try { |
|
|
|
const { id } = ctx.params; |
|
|
|
const { catalog, name } = ctx.request.body; |
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
let metadataFileInfo = await models.MetadataFile.findOne({ where: { id } }); |
|
|
|
if (metadataFileInfo) { |
|
|
|
const putOne = await models.MetadataFile.findOne({ where: { id: { $not: id }, catalog: catalog, name: name } }); |
|
|
|
if (putOne) { |
|
|
|
ctx.status = 400; |
|
|
|
ctx.body = { message: '该元数据名称已存在' } |
|
|
|
} else { |
|
|
|
await models.MetadataFile.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 delMetadataFiles(ctx) { |
|
|
|
const transaction = await ctx.fs.dc.orm.transaction(); |
|
|
|
try { |
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
const { id } = ctx.params; |
|
|
|
let metadataFileInfo = await models.MetadataFile.findOne({ where: { id } }); |
|
|
|
if (metadataFileInfo) { |
|
|
|
let deletable = true; |
|
|
|
let tagFileInfo = await models.TagFile.findOne({ where: { file: id } }); |
|
|
|
if (tagFileInfo) { |
|
|
|
ctx.status = 400; |
|
|
|
ctx.body = { message: '该元数据已被打标' } |
|
|
|
deletable = false; |
|
|
|
} else { |
|
|
|
let resourceConsumptionInfo = await models.ResourceConsumption.findOne({ |
|
|
|
where: { |
|
|
|
resourceName: metadataFileInfo.name, |
|
|
|
resourceType: '文件' |
|
|
|
} |
|
|
|
}); |
|
|
|
if (resourceConsumptionInfo) { |
|
|
|
ctx.status = 400; |
|
|
|
ctx.body = { message: '该元数据存在资源申请' } |
|
|
|
deletable = false; |
|
|
|
} |
|
|
|
} |
|
|
|
if (deletable) { |
|
|
|
await models.MetadataFile.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 = { |
|
|
|
getResourceCatalog, |
|
|
|
postResourceCatalog, |
|
|
@ -560,5 +670,8 @@ module.exports = { |
|
|
|
postTagMetadata, |
|
|
|
getTagMetadata, |
|
|
|
postMetadataResourceApplications, |
|
|
|
getMetadataResourceApplications |
|
|
|
getMetadataResourceApplications, |
|
|
|
postMetadataFiles, |
|
|
|
putMetadataFiles, |
|
|
|
delMetadataFiles |
|
|
|
} |