summaryrefslogtreecommitdiff
path: root/src/processor
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-03 17:50:52 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-04 00:22:00 +0900
commit210cb57aa5d1c832708f0015ab1f23f70474beb5 (patch)
tree8dfdd27810c5112d1bd26e3d65575d16e670ac28 /src/processor
parentAlways deduplicate Activity Streams objects by id (diff)
downloadsharkey-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.ts22
-rw-r--r--src/processor/db/index.ts7
-rw-r--r--src/processor/index.ts23
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);
+};