Skip to content
Snippets Groups Projects
Commit 49459723 authored by syuilo's avatar syuilo
Browse files

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

処理をシンプルにするため
parent 8273a7e7
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
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.
......
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 })
]))
]);
import deletePostDependents from './delete-post-dependents';
const handlers = {
deletePostDependents
};
export default (job, done) => handlers[job.data.type](job).then(() => done(), done);
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
}
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment