diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-03 17:50:52 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-04 00:22:00 +0900 |
| commit | 210cb57aa5d1c832708f0015ab1f23f70474beb5 (patch) | |
| tree | 8dfdd27810c5112d1bd26e3d65575d16e670ac28 /src/processor | |
| parent | Always deduplicate Activity Streams objects by id (diff) | |
| download | sharkey-210cb57aa5d1c832708f0015ab1f23f70474beb5.tar.gz sharkey-210cb57aa5d1c832708f0015ab1f23f70474beb5.tar.bz2 sharkey-210cb57aa5d1c832708f0015ab1f23f70474beb5.zip | |
Implement Delete activity
Diffstat (limited to 'src/processor')
| -rw-r--r-- | src/processor/db/delete-post-dependents.ts | 22 | ||||
| -rw-r--r-- | src/processor/db/index.ts | 7 | ||||
| -rw-r--r-- | src/processor/index.ts | 23 |
3 files changed, 43 insertions, 9 deletions
diff --git a/src/processor/db/delete-post-dependents.ts b/src/processor/db/delete-post-dependents.ts new file mode 100644 index 0000000000..879c41ec9c --- /dev/null +++ b/src/processor/db/delete-post-dependents.ts @@ -0,0 +1,22 @@ +import Favorite from '../../models/favorite'; +import Notification from '../../models/notification'; +import PollVote from '../../models/poll-vote'; +import PostReaction from '../../models/post-reaction'; +import PostWatching from '../../models/post-watching'; +import Post from '../../models/post'; + +export default async ({ data }) => Promise.all([ + Favorite.remove({ postId: data._id }), + Notification.remove({ postId: data._id }), + PollVote.remove({ postId: data._id }), + PostReaction.remove({ postId: data._id }), + PostWatching.remove({ postId: data._id }), + Post.find({ repostId: data._id }).then(reposts => Promise.all([ + Notification.remove({ + postId: { + $in: reposts.map(({ _id }) => _id) + } + }), + Post.remove({ repostId: data._id }) + ])) +]); diff --git a/src/processor/db/index.ts b/src/processor/db/index.ts new file mode 100644 index 0000000000..75838c099b --- /dev/null +++ b/src/processor/db/index.ts @@ -0,0 +1,7 @@ +import deletePostDependents from './delete-post-dependents'; + +const handlers = { + deletePostDependents +}; + +export default (job, done) => handlers[job.data.type](job).then(() => done(), done); diff --git a/src/processor/index.ts b/src/processor/index.ts index cd271d3720..172048ddae 100644 --- a/src/processor/index.ts +++ b/src/processor/index.ts @@ -1,13 +1,18 @@ import queue from '../queue'; +import db from './db'; import http from './http'; -/* - 256 is the default concurrency limit of Mozilla Firefox and Google - Chromium. +export default () => { + queue.process('db', db); - a8af215e691f3a2205a3758d2d96e9d328e100ff - chromium/src.git - Git at Google - https://chromium.googlesource.com/chromium/src.git/+/a8af215e691f3a2205a3758d2d96e9d328e100ff - Network.http.max-connections - MozillaZine Knowledge Base - http://kb.mozillazine.org/Network.http.max-connections -*/ -export default () => queue.process('http', 256, http); + /* + 256 is the default concurrency limit of Mozilla Firefox and Google + Chromium. + + a8af215e691f3a2205a3758d2d96e9d328e100ff - chromium/src.git - Git at Google + https://chromium.googlesource.com/chromium/src.git/+/a8af215e691f3a2205a3758d2d96e9d328e100ff + Network.http.max-connections - MozillaZine Knowledge Base + http://kb.mozillazine.org/Network.http.max-connections + */ + queue.process('http', 256, http); +}; |