投稿に関しては論理削除するように

処理をシンプルにするため
This commit is contained in:
syuilo 2018-04-07 07:19:30 +09:00
parent 8273a7e748
commit 494597236c
5 changed files with 10 additions and 43 deletions

View file

@ -27,6 +27,7 @@ export type IPost = {
_id: mongo.ObjectID;
channelId: mongo.ObjectID;
createdAt: Date;
deletedAt: Date;
mediaIds: mongo.ObjectID[];
replyId: mongo.ObjectID;
repostId: mongo.ObjectID;

View file

@ -1,7 +1,6 @@
import { createQueue } from 'kue';
import config from '../config';
import db from './processors/db';
import http from './processors/http';
const queue = createQueue({
@ -19,10 +18,6 @@ export function createHttp(data) {
.backoff({ delay: 16384, type: 'exponential' });
}
export function createDb(data) {
return queue.create('db', data);
}
export function deliver(user, content, to) {
return createHttp({
type: 'deliver',
@ -33,8 +28,6 @@ export function deliver(user, content, to) {
}
export default function() {
queue.process('db', db);
/*
256 is the default concurrency limit of Mozilla Firefox and Google
Chromium.

View file

@ -1,22 +0,0 @@
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 })
]))
]);

View file

@ -1,7 +0,0 @@
import deletePostDependents from './delete-post-dependents';
const handlers = {
deletePostDependents
};
export default (job, done) => handlers[job.data.type](job).then(() => done(), done);

View file

@ -1,7 +1,6 @@
import * as debug from 'debug';
import Post from '../../../../models/post';
import { createDb } from '../../../../queue';
import { IRemoteUser } from '../../../../models/user';
const log = debug('misskey:activitypub');
@ -19,10 +18,13 @@ export default async function(actor: IRemoteUser, uri: string): Promise<void> {
throw new Error('投稿を削除しようとしているユーザーは投稿の作成者ではありません');
}
Post.remove({ _id: post._id });
createDb({
type: 'deletePostDependents',
id: post._id
}).delay(65536).save();
Post.update({ _id: post._id }, {
$set: {
deletedAt: new Date(),
text: null,
textHtml: null,
mediaIds: [],
poll: null
}
});
}