投稿に関しては論理削除するように
処理をシンプルにするため
This commit is contained in:
parent
8273a7e748
commit
494597236c
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 })
|
||||
]))
|
||||
]);
|
|
@ -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);
|
|
@ -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
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue