Implement Delete activity

This commit is contained in:
Akihiko Odaki 2018-04-03 17:50:52 +09:00
parent 5bcb4b1dde
commit 210cb57aa5
6 changed files with 81 additions and 9 deletions

View file

@ -0,0 +1,24 @@
import create from '../../create';
import deletePost from './post';
export default async (resolver, actor, activity) => {
if ('actor' in activity && actor.account.uri !== activity.actor) {
throw new Error();
}
const results = await create(resolver, actor, activity.object);
await Promise.all(results.map(async promisedResult => {
const result = await promisedResult;
if (result === null) {
return;
}
switch (result.object.$ref) {
case 'posts':
await deletePost(result.object);
}
}));
return null;
};

View file

@ -0,0 +1,10 @@
import Post from '../../../../models/post';
import queue from '../../../../queue';
export default ({ $id }) => Promise.all([
Post.findOneAndDelete({ _id: $id }),
new Promise((resolve, reject) => queue.create('db', {
type: 'deletePostDependents',
id: $id
}).delay(65536).save(error => error ? reject(error) : resolve()))
]);