@siyahbeyaz/strapi-plugin-soft-delete-custom 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/admin/src/index.d.ts +5 -0
- package/dist/admin/src/index.js +30 -0
- package/dist/admin/src/index.js.map +1 -0
- package/dist/admin/src/pages/Explorer/index.d.ts +1 -0
- package/dist/admin/src/pages/Explorer/index.js +82 -0
- package/dist/admin/src/pages/Explorer/index.js.map +1 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/pluginId.js +2 -0
- package/dist/admin/src/pluginId.js.map +1 -0
- package/dist/server/bootstrap.d.ts +5 -0
- package/dist/server/bootstrap.js +48 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/controllers/index.d.ts +10 -0
- package/dist/server/controllers/index.js +5 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/soft-delete-controller.d.ts +9 -0
- package/dist/server/controllers/soft-delete-controller.js +58 -0
- package/dist/server/controllers/soft-delete-controller.js.map +1 -0
- package/dist/server/destroy.d.ts +5 -0
- package/dist/server/destroy.js +6 -0
- package/dist/server/destroy.js.map +1 -0
- package/dist/server/index.d.ts +66 -0
- package/dist/server/index.js +22 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/migrations/add-soft-delete-fields.d.ts +5 -0
- package/dist/server/migrations/add-soft-delete-fields.js +9 -0
- package/dist/server/migrations/add-soft-delete-fields.js.map +1 -0
- package/dist/server/register.d.ts +5 -0
- package/dist/server/register.js +27 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/routes/index.d.ts +14 -0
- package/dist/server/routes/index.js +32 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/services/index.d.ts +26 -0
- package/dist/server/services/index.js +9 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/permanent-delete-service.d.ts +8 -0
- package/dist/server/services/permanent-delete-service.js +62 -0
- package/dist/server/services/permanent-delete-service.js.map +1 -0
- package/dist/server/services/restore-service.d.ts +11 -0
- package/dist/server/services/restore-service.js +87 -0
- package/dist/server/services/restore-service.js.map +1 -0
- package/dist/server/services/soft-delete-service.d.ts +22 -0
- package/dist/server/services/soft-delete-service.js +269 -0
- package/dist/server/services/soft-delete-service.js.map +1 -0
- package/dist/strapi-admin.d.ts +2 -0
- package/dist/strapi-admin.js +3 -0
- package/dist/strapi-admin.js.map +1 -0
- package/dist/strapi-server.d.ts +2 -0
- package/dist/strapi-server.js +3 -0
- package/dist/strapi-server.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default async ({ strapi }) => {
|
|
2
|
+
// Register permissions
|
|
3
|
+
const actionProvider = strapi.admin?.services?.permission?.actionProvider;
|
|
4
|
+
if (actionProvider) {
|
|
5
|
+
await actionProvider.registerMany([
|
|
6
|
+
{
|
|
7
|
+
section: 'plugins',
|
|
8
|
+
displayName: 'Read soft-deleted items',
|
|
9
|
+
uid: 'read',
|
|
10
|
+
pluginName: 'soft-delete',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
section: 'plugins',
|
|
14
|
+
displayName: 'Restore soft-deleted items',
|
|
15
|
+
uid: 'restore',
|
|
16
|
+
pluginName: 'soft-delete',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
section: 'plugins',
|
|
20
|
+
displayName: 'Permanently delete items',
|
|
21
|
+
uid: 'permanent-delete',
|
|
22
|
+
pluginName: 'soft-delete',
|
|
23
|
+
},
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/server/register.ts"],"names":[],"mappings":"AAEA,eAAe,KAAK,EAAE,EAAE,MAAM,EAA2B,EAAE,EAAE;IAC3D,uBAAuB;IACvB,MAAM,cAAc,GAAI,MAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;IAEnF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,YAAY,CAAC;YAChC;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,yBAAyB;gBACtC,GAAG,EAAE,MAAM;gBACX,UAAU,EAAE,aAAa;aAC1B;YACD;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,4BAA4B;gBACzC,GAAG,EAAE,SAAS;gBACd,UAAU,EAAE,aAAa;aAC1B;YACD;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,0BAA0B;gBACvC,GAAG,EAAE,kBAAkB;gBACvB,UAAU,EAAE,aAAa;aAC1B;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
admin: {
|
|
3
|
+
type: 'admin',
|
|
4
|
+
routes: [
|
|
5
|
+
{
|
|
6
|
+
method: 'GET',
|
|
7
|
+
path: '/items',
|
|
8
|
+
handler: 'softDelete.getSoftDeletedItems',
|
|
9
|
+
config: {
|
|
10
|
+
permissions: ['plugin::soft-delete.read'],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
method: 'POST',
|
|
15
|
+
path: '/restore/:uid/:id',
|
|
16
|
+
handler: 'softDelete.restore',
|
|
17
|
+
config: {
|
|
18
|
+
permissions: ['plugin::soft-delete.restore'],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
method: 'POST',
|
|
23
|
+
path: '/permanent/:uid/:id',
|
|
24
|
+
handler: 'softDelete.permanentDelete',
|
|
25
|
+
config: {
|
|
26
|
+
permissions: ['plugin::soft-delete.permanent-delete'],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gCAAgC;gBACzC,MAAM,EAAE;oBACN,WAAW,EAAE,CAAC,0BAA0B,CAAC;iBAC1C;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,oBAAoB;gBAC7B,MAAM,EAAE;oBACN,WAAW,EAAE,CAAC,6BAA6B,CAAC;iBAC7C;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,4BAA4B;gBACrC,MAAM,EAAE;oBACN,WAAW,EAAE,CAAC,sCAAsC,CAAC;iBACtD;aACF;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
softDelete: ({ strapi }: {
|
|
3
|
+
strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
|
|
4
|
+
}) => {
|
|
5
|
+
decorateDbQuery(): void;
|
|
6
|
+
decorateEntityService(): void;
|
|
7
|
+
decorateDocumentService(): void;
|
|
8
|
+
registerLifecycleHooks(): void;
|
|
9
|
+
};
|
|
10
|
+
restore: ({ strapi }: {
|
|
11
|
+
strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
|
|
12
|
+
}) => {
|
|
13
|
+
restore(uid: string, id: string | number): Promise<{
|
|
14
|
+
data: any;
|
|
15
|
+
warnings: never[];
|
|
16
|
+
}>;
|
|
17
|
+
bulkRestore(uid: string, ids: (string | number)[]): Promise<import("@strapi/database/dist/types/index.js").CountResult>;
|
|
18
|
+
};
|
|
19
|
+
permanentDelete: ({ strapi }: {
|
|
20
|
+
strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
|
|
21
|
+
}) => {
|
|
22
|
+
delete(uid: string, id: string | number, params?: any): Promise<any>;
|
|
23
|
+
bulkDelete(uid: string, ids: (string | number)[], params?: any): Promise<any>;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,eAAe;IACb,UAAU;IACV,OAAO;IACP,eAAe;CAChB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
declare const _default: ({ strapi }: {
|
|
3
|
+
strapi: Core.Strapi;
|
|
4
|
+
}) => {
|
|
5
|
+
delete(uid: string, id: string | number, params?: any): Promise<any>;
|
|
6
|
+
bulkDelete(uid: string, ids: (string | number)[], params?: any): Promise<any>;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export default ({ strapi }) => ({
|
|
2
|
+
async delete(uid, id, params = {}) {
|
|
3
|
+
const { confirm } = params;
|
|
4
|
+
if (!confirm) {
|
|
5
|
+
throw new Error('Permanent delete requires confirm: true');
|
|
6
|
+
}
|
|
7
|
+
strapi.log.info(`[Soft Delete] Permanent delete - uid: ${uid}, id: ${id}`);
|
|
8
|
+
// Strapi v5 uses documentId, try to find by documentId first
|
|
9
|
+
let entity = await strapi.db.query(uid).findOne({
|
|
10
|
+
where: {
|
|
11
|
+
documentId: id,
|
|
12
|
+
softDeletedAt: {
|
|
13
|
+
$notNull: true,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
// Fallback to id if documentId search fails
|
|
18
|
+
if (!entity) {
|
|
19
|
+
entity = await strapi.db.query(uid).findOne({
|
|
20
|
+
where: {
|
|
21
|
+
id: id,
|
|
22
|
+
softDeletedAt: {
|
|
23
|
+
$notNull: true,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (!entity) {
|
|
29
|
+
strapi.log.error(`[Soft Delete] Entity not found for permanent delete - uid: ${uid}, id: ${id}`);
|
|
30
|
+
throw new Error('Entity not found or not soft-deleted. Only soft-deleted entities can be permanently deleted.');
|
|
31
|
+
}
|
|
32
|
+
strapi.log.info(`[Soft Delete] Found entity for delete with internal id: ${entity.id}`);
|
|
33
|
+
const service = strapi.entityService;
|
|
34
|
+
const originalDelete = service.__originalDelete;
|
|
35
|
+
if (!originalDelete) {
|
|
36
|
+
throw new Error('Soft delete service not properly initialized (missing originalDelete)');
|
|
37
|
+
}
|
|
38
|
+
const ctx = strapi.requestContext.get();
|
|
39
|
+
const user = ctx?.state?.user;
|
|
40
|
+
strapi.log.info(`Soft Delete: Permanently deleting ${uid}:${id} (internal id: ${entity.id}) by user ${user?.id || 'system'}`);
|
|
41
|
+
return originalDelete.call(service, uid, entity.id, params);
|
|
42
|
+
},
|
|
43
|
+
async bulkDelete(uid, ids, params = {}) {
|
|
44
|
+
const { confirm } = params;
|
|
45
|
+
if (!confirm) {
|
|
46
|
+
throw new Error('Permanent delete requires confirm: true');
|
|
47
|
+
}
|
|
48
|
+
const service = strapi.entityService;
|
|
49
|
+
const originalDeleteMany = service.__originalDeleteMany;
|
|
50
|
+
if (!originalDeleteMany) {
|
|
51
|
+
throw new Error('Soft delete service not properly initialized');
|
|
52
|
+
}
|
|
53
|
+
const result = await originalDeleteMany.call(service, uid, {
|
|
54
|
+
filters: {
|
|
55
|
+
id: { $in: ids },
|
|
56
|
+
softDeletedAt: { $notNull: true },
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
return result;
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=permanent-delete-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permanent-delete-service.js","sourceRoot":"","sources":["../../../src/server/services/permanent-delete-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
declare const _default: ({ strapi }: {
|
|
3
|
+
strapi: Core.Strapi;
|
|
4
|
+
}) => {
|
|
5
|
+
restore(uid: string, id: string | number): Promise<{
|
|
6
|
+
data: any;
|
|
7
|
+
warnings: never[];
|
|
8
|
+
}>;
|
|
9
|
+
bulkRestore(uid: string, ids: (string | number)[]): Promise<import("@strapi/database/dist/types").CountResult>;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export default ({ strapi }) => ({
|
|
2
|
+
async restore(uid, id) {
|
|
3
|
+
strapi.log.info(`[Soft Delete] Restore - uid: ${uid}, id: ${id}, type: ${typeof id}`);
|
|
4
|
+
// First, try to find using strapi.db.query with id
|
|
5
|
+
let entity = await strapi.db.query(uid).findOne({
|
|
6
|
+
where: {
|
|
7
|
+
id: id,
|
|
8
|
+
softDeletedAt: {
|
|
9
|
+
$notNull: true,
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
strapi.log.info(`[Soft Delete] Search by id result: ${entity ? 'found' : 'not found'}`);
|
|
14
|
+
// If not found, try with documentId
|
|
15
|
+
if (!entity) {
|
|
16
|
+
entity = await strapi.db.query(uid).findOne({
|
|
17
|
+
where: {
|
|
18
|
+
documentId: id,
|
|
19
|
+
softDeletedAt: {
|
|
20
|
+
$notNull: true,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
strapi.log.info(`[Soft Delete] Search by documentId result: ${entity ? 'found' : 'not found'}`);
|
|
25
|
+
}
|
|
26
|
+
// If still not found, try finding all soft-deleted items and match
|
|
27
|
+
if (!entity) {
|
|
28
|
+
strapi.log.info(`[Soft Delete] Trying to find all soft-deleted items to debug...`);
|
|
29
|
+
const allSoftDeleted = await strapi.db.query(uid).findMany({
|
|
30
|
+
where: {
|
|
31
|
+
softDeletedAt: {
|
|
32
|
+
$notNull: true,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
limit: 10,
|
|
36
|
+
});
|
|
37
|
+
strapi.log.info(`[Soft Delete] Found ${allSoftDeleted.length} soft-deleted items`);
|
|
38
|
+
allSoftDeleted.forEach((item) => {
|
|
39
|
+
strapi.log.info(`[Soft Delete] Item - id: ${item.id}, documentId: ${item.documentId}`);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (!entity) {
|
|
43
|
+
strapi.log.error(`[Soft Delete] Entity not found - uid: ${uid}, id: ${id}`);
|
|
44
|
+
throw new Error('Entity not found or not soft-deleted');
|
|
45
|
+
}
|
|
46
|
+
strapi.log.info(`[Soft Delete] Found entity - id: ${entity.id}, documentId: ${entity.documentId}`);
|
|
47
|
+
const ctx = strapi.requestContext.get();
|
|
48
|
+
const user = ctx?.state?.user;
|
|
49
|
+
strapi.log.info(`Soft Delete: Restoring ${uid}:${id} (db id: ${entity.id}) by user ${user?.id || 'system'}`);
|
|
50
|
+
const restored = await strapi.db.query(uid).update({
|
|
51
|
+
where: { id: entity.id },
|
|
52
|
+
data: {
|
|
53
|
+
softDeletedAt: null,
|
|
54
|
+
softDeletedById: null,
|
|
55
|
+
softDeletedByType: null,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
data: restored,
|
|
60
|
+
warnings: [],
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
async bulkRestore(uid, ids) {
|
|
64
|
+
if (!ids || ids.length === 0)
|
|
65
|
+
return { count: 0 };
|
|
66
|
+
const ctx = strapi.requestContext.get();
|
|
67
|
+
const user = ctx?.state?.user;
|
|
68
|
+
strapi.log.info(`Soft Delete: Bulk restoring ${ids.length} items in ${uid}`);
|
|
69
|
+
const result = await strapi.db.query(uid).updateMany({
|
|
70
|
+
where: {
|
|
71
|
+
id: {
|
|
72
|
+
$in: ids,
|
|
73
|
+
},
|
|
74
|
+
softDeletedAt: {
|
|
75
|
+
$notNull: true,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
data: {
|
|
79
|
+
softDeletedAt: null,
|
|
80
|
+
softDeletedById: null,
|
|
81
|
+
softDeletedByType: null,
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
return result;
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=restore-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore-service.js","sourceRoot":"","sources":["../../../src/server/services/restore-service.ts"],"names":[],"mappings":"AAEA,eAAe,CAAC,EAAE,MAAM,EAA2B,EAAE,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,EAAmB;QAC5C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,SAAS,EAAE,WAAW,OAAO,EAAE,EAAE,CAAC,CAAC;QAEtF,mDAAmD;QACnD,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YAC9C,KAAK,EAAE;gBACL,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE;oBACb,QAAQ,EAAE,IAAI;iBACf;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAExF,oCAAoC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC1C,KAAK,EAAE;oBACL,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE;wBACb,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACnF,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;gBACzD,KAAK,EAAE;oBACL,aAAa,EAAE;wBACb,QAAQ,EAAE,IAAI;qBACf;iBACF;gBACD,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,cAAc,CAAC,MAAM,qBAAqB,CAAC,CAAC;YACnF,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,EAAE,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,MAAM,CAAC,EAAE,iBAAiB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAEnG,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,GAAG,IAAI,EAAE,YAAY,MAAM,CAAC,EAAE,aAAa,IAAI,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QAE7G,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACxB,IAAI,EAAE;gBACJ,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,GAAwB;QACrD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAElD,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC;QAE7E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,GAAG,EAAE,GAAG;iBACT;gBACD,aAAa,EAAE;oBACb,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,IAAI,EAAE;gBACJ,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Core } from '@strapi/strapi';
|
|
2
|
+
/**
|
|
3
|
+
* Service to manage soft delete decoration of the Strapi Entity Service.
|
|
4
|
+
*/
|
|
5
|
+
declare const _default: ({ strapi }: {
|
|
6
|
+
strapi: Core.Strapi;
|
|
7
|
+
}) => {
|
|
8
|
+
/**
|
|
9
|
+
* Decorates DB Query methods to catch ALL operations at the lowest level
|
|
10
|
+
*/
|
|
11
|
+
decorateDbQuery(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Decorates the entityService methods
|
|
14
|
+
*/
|
|
15
|
+
decorateEntityService(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Decorates the Document Service for Strapi v5+ Content Manager compatibility
|
|
18
|
+
*/
|
|
19
|
+
decorateDocumentService(): void;
|
|
20
|
+
registerLifecycleHooks(): void;
|
|
21
|
+
};
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service to manage soft delete decoration of the Strapi Entity Service.
|
|
3
|
+
*/
|
|
4
|
+
export default ({ strapi }) => ({
|
|
5
|
+
/**
|
|
6
|
+
* Decorates DB Query methods to catch ALL operations at the lowest level
|
|
7
|
+
*/
|
|
8
|
+
decorateDbQuery() {
|
|
9
|
+
const originalQuery = strapi.db.query.bind(strapi.db);
|
|
10
|
+
strapi.db.query = (uid) => {
|
|
11
|
+
const queryBuilder = originalQuery(uid);
|
|
12
|
+
const model = strapi.getModel(uid);
|
|
13
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
14
|
+
if (!hasSoftDelete) {
|
|
15
|
+
return queryBuilder;
|
|
16
|
+
}
|
|
17
|
+
// Store originals
|
|
18
|
+
const originalDelete = queryBuilder.delete;
|
|
19
|
+
const originalDeleteMany = queryBuilder.deleteMany;
|
|
20
|
+
const originalFindOne = queryBuilder.findOne;
|
|
21
|
+
const originalFindMany = queryBuilder.findMany;
|
|
22
|
+
const originalCount = queryBuilder.count;
|
|
23
|
+
// Override delete
|
|
24
|
+
queryBuilder.delete = async function (params) {
|
|
25
|
+
const ctx = strapi.requestContext.get();
|
|
26
|
+
const user = ctx?.state?.user;
|
|
27
|
+
const deletedByType = user ? 'admin' : 'api';
|
|
28
|
+
strapi.log.debug(`Soft Delete: DB Query - intercepting delete on ${uid}`);
|
|
29
|
+
return queryBuilder.update({
|
|
30
|
+
...params,
|
|
31
|
+
data: {
|
|
32
|
+
softDeletedAt: new Date(),
|
|
33
|
+
softDeletedById: user?.id ?? null,
|
|
34
|
+
softDeletedByType: deletedByType,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
// Override deleteMany
|
|
39
|
+
queryBuilder.deleteMany = async function (params) {
|
|
40
|
+
const ctx = strapi.requestContext.get();
|
|
41
|
+
const user = ctx?.state?.user;
|
|
42
|
+
const deletedByType = user ? 'admin' : 'api';
|
|
43
|
+
strapi.log.debug(`Soft Delete: DB Query - intercepting deleteMany on ${uid}`);
|
|
44
|
+
return queryBuilder.updateMany({
|
|
45
|
+
...params,
|
|
46
|
+
data: {
|
|
47
|
+
softDeletedAt: new Date(),
|
|
48
|
+
softDeletedById: user?.id ?? null,
|
|
49
|
+
softDeletedByType: deletedByType,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
// Override findOne - filter out soft deleted
|
|
54
|
+
queryBuilder.findOne = async function (params = {}) {
|
|
55
|
+
const where = params.where || {};
|
|
56
|
+
if (where.softDeletedAt === undefined) {
|
|
57
|
+
params.where = { ...where, softDeletedAt: null };
|
|
58
|
+
}
|
|
59
|
+
return originalFindOne.call(this, params);
|
|
60
|
+
};
|
|
61
|
+
// Override findMany - filter out soft deleted
|
|
62
|
+
queryBuilder.findMany = async function (params = {}) {
|
|
63
|
+
const where = params.where || {};
|
|
64
|
+
if (where.softDeletedAt === undefined) {
|
|
65
|
+
params.where = { ...where, softDeletedAt: null };
|
|
66
|
+
}
|
|
67
|
+
return originalFindMany.call(this, params);
|
|
68
|
+
};
|
|
69
|
+
// Override count - exclude soft deleted
|
|
70
|
+
queryBuilder.count = async function (params = {}) {
|
|
71
|
+
const where = params.where || {};
|
|
72
|
+
if (where.softDeletedAt === undefined) {
|
|
73
|
+
params.where = { ...where, softDeletedAt: null };
|
|
74
|
+
}
|
|
75
|
+
return originalCount.call(this, params);
|
|
76
|
+
};
|
|
77
|
+
return queryBuilder;
|
|
78
|
+
};
|
|
79
|
+
strapi.log.info('Soft Delete: DB Query decorated (delete + find filtering)');
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* Decorates the entityService methods
|
|
83
|
+
*/
|
|
84
|
+
decorateEntityService() {
|
|
85
|
+
const service = strapi.entityService;
|
|
86
|
+
if (service.isDecoratedWithSoftDelete) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const originalDelete = service.delete;
|
|
90
|
+
const originalDeleteMany = service.deleteMany;
|
|
91
|
+
const originalFindOne = service.findOne;
|
|
92
|
+
const originalFindMany = service.findMany;
|
|
93
|
+
service.__originalDelete = originalDelete;
|
|
94
|
+
service.__originalDeleteMany = originalDeleteMany;
|
|
95
|
+
// DELETE
|
|
96
|
+
service.delete = async (uid, id, params = {}) => {
|
|
97
|
+
const model = strapi.getModel(uid);
|
|
98
|
+
const hasSoftDelete = model.attributes && model.attributes['softDeletedAt'];
|
|
99
|
+
if (!hasSoftDelete) {
|
|
100
|
+
return originalDelete.call(service, uid, id, params);
|
|
101
|
+
}
|
|
102
|
+
const ctx = strapi.requestContext.get();
|
|
103
|
+
const user = ctx?.state?.user;
|
|
104
|
+
const deletedByType = user ? 'admin' : 'api';
|
|
105
|
+
return service.update(uid, id, {
|
|
106
|
+
data: {
|
|
107
|
+
softDeletedAt: new Date(),
|
|
108
|
+
softDeletedById: user?.id ?? null,
|
|
109
|
+
softDeletedByType: deletedByType,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
service.deleteMany = async (uid, params = {}) => {
|
|
114
|
+
const model = strapi.getModel(uid);
|
|
115
|
+
const hasSoftDelete = model.attributes && model.attributes['softDeletedAt'];
|
|
116
|
+
if (!hasSoftDelete) {
|
|
117
|
+
return originalDeleteMany.call(service, uid, params);
|
|
118
|
+
}
|
|
119
|
+
const ctx = strapi.requestContext.get();
|
|
120
|
+
const user = ctx?.state?.user;
|
|
121
|
+
const deletedByType = user ? 'admin' : 'api';
|
|
122
|
+
return strapi.db.query(uid).updateMany({
|
|
123
|
+
where: params.filters || params,
|
|
124
|
+
data: {
|
|
125
|
+
softDeletedAt: new Date(),
|
|
126
|
+
softDeletedById: user?.id ?? null,
|
|
127
|
+
softDeletedByType: deletedByType,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
// FIND - Add filtering
|
|
132
|
+
service.findOne = async (uid, id, params = {}) => {
|
|
133
|
+
const model = strapi.getModel(uid);
|
|
134
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
135
|
+
if (!hasSoftDelete) {
|
|
136
|
+
return originalFindOne.call(service, uid, id, params);
|
|
137
|
+
}
|
|
138
|
+
const filters = params.filters || {};
|
|
139
|
+
if (filters.softDeletedAt === undefined) {
|
|
140
|
+
params.filters = { ...filters, softDeletedAt: { $null: true } };
|
|
141
|
+
}
|
|
142
|
+
return originalFindOne.call(service, uid, id, params);
|
|
143
|
+
};
|
|
144
|
+
service.findMany = async (uid, params = {}) => {
|
|
145
|
+
const model = strapi.getModel(uid);
|
|
146
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
147
|
+
if (!hasSoftDelete) {
|
|
148
|
+
return originalFindMany.call(service, uid, params);
|
|
149
|
+
}
|
|
150
|
+
const filters = params.filters || {};
|
|
151
|
+
if (filters.softDeletedAt === undefined) {
|
|
152
|
+
params.filters = { ...filters, softDeletedAt: { $null: true } };
|
|
153
|
+
}
|
|
154
|
+
return originalFindMany.call(service, uid, params);
|
|
155
|
+
};
|
|
156
|
+
service.isDecoratedWithSoftDelete = true;
|
|
157
|
+
strapi.log.info('Soft Delete: Entity Service decorated (delete + find filtering)');
|
|
158
|
+
// Decorate Document Service (Strapi v5+)
|
|
159
|
+
this.decorateDocumentService();
|
|
160
|
+
},
|
|
161
|
+
/**
|
|
162
|
+
* Decorates the Document Service for Strapi v5+ Content Manager compatibility
|
|
163
|
+
*/
|
|
164
|
+
decorateDocumentService() {
|
|
165
|
+
const documentService = strapi.documents;
|
|
166
|
+
if (!documentService || documentService.isDecoratedWithSoftDelete) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const originalDelete = documentService.delete;
|
|
170
|
+
const originalDeleteMany = documentService.deleteMany;
|
|
171
|
+
const originalFindOne = documentService.findOne;
|
|
172
|
+
const originalFindMany = documentService.findMany;
|
|
173
|
+
documentService.__originalDelete = originalDelete;
|
|
174
|
+
documentService.__originalDeleteMany = originalDeleteMany;
|
|
175
|
+
// DELETE
|
|
176
|
+
documentService.delete = async (uid, documentId, params = {}) => {
|
|
177
|
+
const model = strapi.getModel(uid);
|
|
178
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
179
|
+
if (!hasSoftDelete) {
|
|
180
|
+
return originalDelete.call(documentService, uid, documentId, params);
|
|
181
|
+
}
|
|
182
|
+
const ctx = strapi.requestContext.get();
|
|
183
|
+
const user = ctx?.state?.user;
|
|
184
|
+
const deletedByType = user ? 'admin' : 'api';
|
|
185
|
+
strapi.log.debug(`Soft Delete: Document Service - soft deleting ${uid}:${documentId}`);
|
|
186
|
+
return documentService.update(uid, documentId, {
|
|
187
|
+
...params,
|
|
188
|
+
data: {
|
|
189
|
+
softDeletedAt: new Date(),
|
|
190
|
+
softDeletedById: user?.id ?? null,
|
|
191
|
+
softDeletedByType: deletedByType,
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
documentService.deleteMany = async (uid, params = {}) => {
|
|
196
|
+
const model = strapi.getModel(uid);
|
|
197
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
198
|
+
if (!hasSoftDelete) {
|
|
199
|
+
return originalDeleteMany.call(documentService, uid, params);
|
|
200
|
+
}
|
|
201
|
+
const ctx = strapi.requestContext.get();
|
|
202
|
+
const user = ctx?.state?.user;
|
|
203
|
+
const deletedByType = user ? 'admin' : 'api';
|
|
204
|
+
strapi.log.debug(`Soft Delete: Document Service - soft deleting many ${uid}`);
|
|
205
|
+
return strapi.db.query(uid).updateMany({
|
|
206
|
+
where: params.filters || {},
|
|
207
|
+
data: {
|
|
208
|
+
softDeletedAt: new Date(),
|
|
209
|
+
softDeletedById: user?.id ?? null,
|
|
210
|
+
softDeletedByType: deletedByType,
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
// FIND - Add filtering
|
|
215
|
+
documentService.findOne = async (uid, documentId, params = {}) => {
|
|
216
|
+
const model = strapi.getModel(uid);
|
|
217
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
218
|
+
if (!hasSoftDelete) {
|
|
219
|
+
return originalFindOne.call(documentService, uid, documentId, params);
|
|
220
|
+
}
|
|
221
|
+
const filters = params.filters || {};
|
|
222
|
+
if (filters.softDeletedAt === undefined) {
|
|
223
|
+
params.filters = { ...filters, softDeletedAt: { $null: true } };
|
|
224
|
+
}
|
|
225
|
+
return originalFindOne.call(documentService, uid, documentId, params);
|
|
226
|
+
};
|
|
227
|
+
documentService.findMany = async (uid, params = {}) => {
|
|
228
|
+
const model = strapi.getModel(uid);
|
|
229
|
+
const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
|
|
230
|
+
if (!hasSoftDelete) {
|
|
231
|
+
return originalFindMany.call(documentService, uid, params);
|
|
232
|
+
}
|
|
233
|
+
const filters = params.filters || {};
|
|
234
|
+
if (filters.softDeletedAt === undefined) {
|
|
235
|
+
params.filters = { ...filters, softDeletedAt: { $null: true } };
|
|
236
|
+
}
|
|
237
|
+
return originalFindMany.call(documentService, uid, params);
|
|
238
|
+
};
|
|
239
|
+
documentService.isDecoratedWithSoftDelete = true;
|
|
240
|
+
strapi.log.info('Soft Delete: Document Service decorated (delete + find filtering)');
|
|
241
|
+
},
|
|
242
|
+
registerLifecycleHooks() {
|
|
243
|
+
// Lifecycle hooks as backup
|
|
244
|
+
const subscribe = strapi.db.lifecycles.subscribe;
|
|
245
|
+
subscribe({
|
|
246
|
+
models: ['*'],
|
|
247
|
+
async beforeFindOne(event) {
|
|
248
|
+
const model = strapi.getModel(event.model.uid);
|
|
249
|
+
if (model.attributes && model.attributes['softDeletedAt']) {
|
|
250
|
+
const where = event.params.where || {};
|
|
251
|
+
if (where.softDeletedAt === undefined) {
|
|
252
|
+
event.params.where = { ...where, softDeletedAt: null };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
async beforeFindMany(event) {
|
|
257
|
+
const model = strapi.getModel(event.model.uid);
|
|
258
|
+
if (model.attributes && model.attributes['softDeletedAt']) {
|
|
259
|
+
const where = event.params.where || {};
|
|
260
|
+
if (where.softDeletedAt === undefined) {
|
|
261
|
+
event.params.where = { ...where, softDeletedAt: null };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
});
|
|
266
|
+
strapi.log.info('Soft Delete: Lifecycle hooks registered');
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
//# sourceMappingURL=soft-delete-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soft-delete-service.js","sourceRoot":"","sources":["../../../src/server/services/soft-delete-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strapi-admin.js","sourceRoot":"","sources":["../src/strapi-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAEzC,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strapi-server.js","sourceRoot":"","sources":["../src/strapi-server.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,eAAe,MAAM,CAAC"}
|