mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 10:46:54 +00:00
feat: remove method
This commit is contained in:
parent
05fe32fcf1
commit
6013b4d274
@ -387,6 +387,10 @@ export class Repository<TModelAttributes extends {} = any, TCreationAttributes e
|
|||||||
|
|
||||||
options = <DestroyOptions>options;
|
options = <DestroyOptions>options;
|
||||||
|
|
||||||
|
if (options['individualHooks'] === undefined) {
|
||||||
|
options['individualHooks'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
const filterByTk: TargetKey[] | undefined =
|
const filterByTk: TargetKey[] | undefined =
|
||||||
options.filterByTk && !lodash.isArray(options.filterByTk)
|
options.filterByTk && !lodash.isArray(options.filterByTk)
|
||||||
? [options.filterByTk]
|
? [options.filterByTk]
|
||||||
|
@ -91,7 +91,7 @@ describe('server hooks', () => {
|
|||||||
{
|
{
|
||||||
type: 'onCollectionFieldDestroy',
|
type: 'onCollectionFieldDestroy',
|
||||||
collection: 'posts',
|
collection: 'posts',
|
||||||
fields: ['name'],
|
field: 'name',
|
||||||
method: 'removeEmptyParents',
|
method: 'removeEmptyParents',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -107,7 +107,7 @@ describe('server hooks', () => {
|
|||||||
{
|
{
|
||||||
type: 'onCollectionFieldDestroy',
|
type: 'onCollectionFieldDestroy',
|
||||||
collection: 'posts',
|
collection: 'posts',
|
||||||
fields: ['title'],
|
field: 'title',
|
||||||
method: 'removeEmptyParents',
|
method: 'removeEmptyParents',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -129,7 +129,7 @@ describe('server hooks', () => {
|
|||||||
{
|
{
|
||||||
type: 'onCollectionFieldDestroy',
|
type: 'onCollectionFieldDestroy',
|
||||||
collection: 'posts',
|
collection: 'posts',
|
||||||
fields: ['intro'],
|
field: 'intro',
|
||||||
method: 'removeEmptyParents',
|
method: 'removeEmptyParents',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -172,6 +172,7 @@ describe('server hooks', () => {
|
|||||||
|
|
||||||
const schema = {
|
const schema = {
|
||||||
'x-uid': 'root',
|
'x-uid': 'root',
|
||||||
|
name: 'root',
|
||||||
properties: {
|
properties: {
|
||||||
child1: {
|
child1: {
|
||||||
'x-uid': 'child1',
|
'x-uid': 'child1',
|
||||||
@ -179,9 +180,27 @@ describe('server hooks', () => {
|
|||||||
|
|
||||||
child2: {
|
child2: {
|
||||||
'x-uid': 'child2',
|
'x-uid': 'child2',
|
||||||
'x-server-hooks': [],
|
'x-server-hooks': [
|
||||||
|
{
|
||||||
|
type: 'onCollectionDestroy',
|
||||||
|
collection: 'posts',
|
||||||
|
method: 'remove',
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
await uiSchemaRepository.insert(schema);
|
||||||
|
|
||||||
|
await db.getRepository('collections').destroy({
|
||||||
|
filter: {
|
||||||
|
name: 'posts',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const jsonTree = await uiSchemaRepository.getJsonSchema('root');
|
||||||
|
expect(jsonTree['properties']['child1']).toBeDefined();
|
||||||
|
expect(jsonTree['properties']['child2']).not.toBeDefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -37,7 +37,7 @@ describe('server hooks', () => {
|
|||||||
{
|
{
|
||||||
type: 'onCollectionFieldDestroy',
|
type: 'onCollectionFieldDestroy',
|
||||||
collection: 'posts',
|
collection: 'posts',
|
||||||
fields: ['title'],
|
field: 'title',
|
||||||
method: 'onFieldDestroy',
|
method: 'onFieldDestroy',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -221,7 +221,7 @@ describe('server hooks', () => {
|
|||||||
{
|
{
|
||||||
type: 'onCollectionFieldDestroy',
|
type: 'onCollectionFieldDestroy',
|
||||||
collection: 'posts',
|
collection: 'posts',
|
||||||
fields: ['title'],
|
field: 'title',
|
||||||
method: 'preventDestroy',
|
method: 'preventDestroy',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -6,19 +6,23 @@ export default {
|
|||||||
// autoGenId: false,
|
// autoGenId: false,
|
||||||
timestamps: false,
|
timestamps: false,
|
||||||
fields: [
|
fields: [
|
||||||
{ type: 'belongsTo', name: 'uiSchema', target: 'ui_schemas', foreignKey: 'uid' },
|
{ type: 'belongsTo', name: 'uiSchema', target: 'ui_schemas', foreignKey: 'uid', onDelete: 'CASCADE' },
|
||||||
{ type: 'string', name: 'type' },
|
{ type: 'string', name: 'type' },
|
||||||
{
|
{
|
||||||
type: 'string',
|
type: 'string',
|
||||||
name: 'collection',
|
name: 'collection',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'array',
|
type: 'string',
|
||||||
name: 'fields',
|
name: 'field',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'string',
|
type: 'string',
|
||||||
name: 'method',
|
name: 'method',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'json',
|
||||||
|
name: 'params',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
} as CollectionOptions;
|
} as CollectionOptions;
|
||||||
|
@ -370,6 +370,7 @@ export default class UiSchemaRepository extends Repository {
|
|||||||
}
|
}
|
||||||
return insertedNodes;
|
return insertedNodes;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.log({ err });
|
||||||
if (handleTransaction) {
|
if (handleTransaction) {
|
||||||
await transaction.rollback();
|
await transaction.rollback();
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
const hooks = [require('./removeEmptyParents').default];
|
const hooks = [require('./removeEmptyParents').default, require('./remove').default];
|
||||||
|
|
||||||
export { hooks };
|
export { hooks };
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
import { hookFactory } from './factory';
|
||||||
|
import { UiSchemaRepository } from '@nocobase/plugin-ui-schema-storage';
|
||||||
|
|
||||||
|
async function remove({ schemaInstance, options, db }) {
|
||||||
|
const uiSchemaRepository: UiSchemaRepository = db.getRepository('ui_schemas');
|
||||||
|
await uiSchemaRepository.remove(schemaInstance.get('uid'));
|
||||||
|
}
|
||||||
|
|
||||||
|
export default hookFactory('onCollectionDestroy', 'remove', remove);
|
@ -78,7 +78,7 @@ export class ServerHooks {
|
|||||||
{
|
{
|
||||||
type: 'onCollectionFieldDestroy',
|
type: 'onCollectionFieldDestroy',
|
||||||
collection: collectionName,
|
collection: collectionName,
|
||||||
'fields.$anyOf': [fieldName],
|
field: fieldName,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
collectionFieldInstance: fieldModel,
|
collectionFieldInstance: fieldModel,
|
||||||
|
Loading…
Reference in New Issue
Block a user