Skip to content
This repository was archived by the owner on Jun 27, 2019. It is now read-only.

Commit fc0e683

Browse files
committed
soft delete contributions / test delete by object
1 parent cb761a4 commit fc0e683

File tree

5 files changed

+44
-13
lines changed

5 files changed

+44
-13
lines changed

server/hooks/null-deleted-data.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,29 @@ const alterItems = require('../helper/alter-items');
33

44
const defaults = {
55
fields: [
6-
'content'
6+
'content',
7+
'cando'
78
]
89
};
910

1011
module.exports = (options = defaults) => alterItems(handleItem(options));
1112

1213
const handleItem = options => item => {
1314
if (item.deleted) {
14-
options.fields.forEach(field => {
15-
item[field] = 'DELETED';
16-
});
15+
if (Array.isArray(options.fields)) {
16+
options.fields.forEach(field => {
17+
item[field] = 'DELETED';
18+
});
19+
} else {
20+
options.fields.entries.forEach(field => {
21+
const [key, value] = field;
22+
if (typeof value === 'object') {
23+
item[key] = handleItem(options[key])(item[key]);
24+
} else {
25+
item[field] = 'DELETED';
26+
}
27+
});
28+
}
1729
}
1830
return item;
1931
};

server/models/contributions.model.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ module.exports = function (app) {
7575
}
7676
}
7777
},
78+
deleted: { type: Boolean, default: false },
7879
createdAt: { type: Date, default: Date.now },
7980
updatedAt: { type: Date, default: Date.now },
8081
wasSeeded: { type: Boolean }

server/services/comments/comments.hooks.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const {
99
const { isVerified } = require('feathers-authentication-management').hooks;
1010
const createExcerpt = require('../../hooks/create-excerpt');
1111
const nullDeletedData = require('../../hooks/null-deleted-data');
12-
const hideDeletedData = require('../../hooks/hide-deleted-data');
12+
const keepDeletedDataFields = require('../../hooks/keep-deleted-data-fields');
1313
const createNotifications = require('./hooks/create-notifications');
1414
const createMentionNotifications = require('./hooks/create-mention-notifications');
1515
const _ = require('lodash');
@@ -91,7 +91,7 @@ module.exports = {
9191
all: [
9292
populate({ schema: userSchema }),
9393
xss({ fields: xssFields }),
94-
hideDeletedData()
94+
keepDeletedDataFields()
9595
],
9696
find: [
9797
discard('content', 'user.coverImg', 'badgeIds')

server/services/contributions/contributions.hooks.js

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { authenticate } = require('feathers-authentication').hooks;
2-
const { when, unless, isProvider, populate } = require('feathers-hooks-common');
2+
const { when, unless, isProvider, populate, softDelete, setNow } = require('feathers-hooks-common');
33
const {
44
//queryWithCurrentUser,
55
associateCurrentUser,
@@ -9,6 +9,8 @@ const { isVerified } = require('feathers-authentication-management').hooks;
99
const createSlug = require('../../hooks/create-slug');
1010
const saveRemoteImages = require('../../hooks/save-remote-images');
1111
const createExcerpt = require('../../hooks/create-excerpt');
12+
const nullDeletedData = require('../../hooks/null-deleted-data');
13+
const keepDeletedDataFields = require('../../hooks/keep-deleted-data-fields');
1214
const search = require('feathers-mongodb-fuzzy-search');
1315
const thumbnails = require('../../hooks/thumbnails');
1416
const isModerator = require('../../hooks/is-moderator-boolean');
@@ -98,7 +100,8 @@ module.exports = {
98100
get: [
99101
unless(isModerator(),
100102
excludeDisabled()
101-
)
103+
),
104+
softDelete()
102105
],
103106
create: [
104107
authenticate('jwt'),
@@ -109,7 +112,8 @@ module.exports = {
109112
associateCurrentUser(),
110113
createSlug({ field: 'title' }),
111114
saveRemoteImages(['teaserImg']),
112-
createExcerpt()
115+
createExcerpt(),
116+
softDelete()
113117
],
114118
update: [
115119
authenticate('jwt'),
@@ -121,7 +125,9 @@ module.exports = {
121125
restrictToOwner()
122126
),
123127
saveRemoteImages(['teaserImg']),
124-
createExcerpt()
128+
createExcerpt(),
129+
softDelete(),
130+
setNow('updatedAt')
125131
],
126132
patch: [
127133
authenticate('jwt'),
@@ -133,15 +139,21 @@ module.exports = {
133139
restrictToOwner()
134140
),
135141
saveRemoteImages(['teaserImg']),
136-
createExcerpt()
142+
createExcerpt(),
143+
softDelete(),
144+
setNow('updatedAt'),
145+
// SoftDelete uses patch to delete items
146+
// Make changes to deleted items here
147+
nullDeletedData({ fields: [ 'content', 'contentExcerpt' ]})
137148
],
138149
remove: [
139150
authenticate('jwt'),
140151
isVerified(),
141152
unless(isModerator(),
142153
excludeDisabled(),
143154
restrictToOwner()
144-
)
155+
),
156+
softDelete()
145157
]
146158
},
147159

@@ -151,7 +163,13 @@ module.exports = {
151163
populate({ schema: userSchema }),
152164
populate({ schema: categoriesSchema }),
153165
populate({ schema: candosSchema }),
154-
populate({ schema: commentsSchema })
166+
populate({ schema: commentsSchema }),
167+
keepDeletedDataFields({ fields: [
168+
'_id',
169+
'deleted',
170+
'createdAt',
171+
'updatedAt'
172+
]})
155173
],
156174
find: [
157175
when(isSingleItem(),

0 commit comments

Comments
 (0)