tachybase_todo/packages/plugins/collection-manager/src/resourcers/collections.ts
2023-04-04 11:34:20 +08:00

45 lines
904 B
TypeScript

import { Database } from '@nocobase/database';
export default {
async ['collections:setFields'](ctx, next) {
const { filterByTk, values } = ctx.action.params;
const transaction = await ctx.app.db.sequelize.transaction();
try {
const fields = values.fields?.map((f) => {
delete f.key;
return f;
});
const db = ctx.app.db as Database;
const collection = await db.getRepository('collections').findOne({
filter: {
name: filterByTk,
},
transaction,
});
await db.getRepository('collections').update({
filterByTk,
values: {
fields,
},
transaction,
});
await collection.loadFields({
transaction,
});
await transaction.commit();
} catch (e) {
await transaction.rollback();
throw e;
}
await next();
},
};