投稿に関しては論理削除するように
処理をシンプルにするため
This commit is contained in:
		
							parent
							
								
									8273a7e748
								
							
						
					
					
						commit
						494597236c
					
				
					 5 changed files with 10 additions and 43 deletions
				
			
		| 
						 | 
					@ -27,6 +27,7 @@ export type IPost = {
 | 
				
			||||||
	_id: mongo.ObjectID;
 | 
						_id: mongo.ObjectID;
 | 
				
			||||||
	channelId: mongo.ObjectID;
 | 
						channelId: mongo.ObjectID;
 | 
				
			||||||
	createdAt: Date;
 | 
						createdAt: Date;
 | 
				
			||||||
 | 
						deletedAt: Date;
 | 
				
			||||||
	mediaIds: mongo.ObjectID[];
 | 
						mediaIds: mongo.ObjectID[];
 | 
				
			||||||
	replyId: mongo.ObjectID;
 | 
						replyId: mongo.ObjectID;
 | 
				
			||||||
	repostId: mongo.ObjectID;
 | 
						repostId: mongo.ObjectID;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,6 @@
 | 
				
			||||||
import { createQueue } from 'kue';
 | 
					import { createQueue } from 'kue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import config from '../config';
 | 
					import config from '../config';
 | 
				
			||||||
import db from './processors/db';
 | 
					 | 
				
			||||||
import http from './processors/http';
 | 
					import http from './processors/http';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const queue = createQueue({
 | 
					const queue = createQueue({
 | 
				
			||||||
| 
						 | 
					@ -19,10 +18,6 @@ export function createHttp(data) {
 | 
				
			||||||
		.backoff({ delay: 16384, type: 'exponential' });
 | 
							.backoff({ delay: 16384, type: 'exponential' });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function createDb(data) {
 | 
					 | 
				
			||||||
	return queue.create('db', data);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export function deliver(user, content, to) {
 | 
					export function deliver(user, content, to) {
 | 
				
			||||||
	return createHttp({
 | 
						return createHttp({
 | 
				
			||||||
		type: 'deliver',
 | 
							type: 'deliver',
 | 
				
			||||||
| 
						 | 
					@ -33,8 +28,6 @@ export function deliver(user, content, to) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function() {
 | 
					export default function() {
 | 
				
			||||||
	queue.process('db', db);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
		256 is the default concurrency limit of Mozilla Firefox and Google
 | 
							256 is the default concurrency limit of Mozilla Firefox and Google
 | 
				
			||||||
		Chromium.
 | 
							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 * as debug from 'debug';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Post from '../../../../models/post';
 | 
					import Post from '../../../../models/post';
 | 
				
			||||||
import { createDb } from '../../../../queue';
 | 
					 | 
				
			||||||
import { IRemoteUser } from '../../../../models/user';
 | 
					import { IRemoteUser } from '../../../../models/user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const log = debug('misskey:activitypub');
 | 
					const log = debug('misskey:activitypub');
 | 
				
			||||||
| 
						 | 
					@ -19,10 +18,13 @@ export default async function(actor: IRemoteUser, uri: string): Promise<void> {
 | 
				
			||||||
		throw new Error('投稿を削除しようとしているユーザーは投稿の作成者ではありません');
 | 
							throw new Error('投稿を削除しようとしているユーザーは投稿の作成者ではありません');
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Post.remove({ _id: post._id });
 | 
						Post.update({ _id: post._id }, {
 | 
				
			||||||
 | 
							$set: {
 | 
				
			||||||
	createDb({
 | 
								deletedAt: new Date(),
 | 
				
			||||||
		type: 'deletePostDependents',
 | 
								text: null,
 | 
				
			||||||
		id: post._id
 | 
								textHtml: null,
 | 
				
			||||||
	}).delay(65536).save();
 | 
								mediaIds: [],
 | 
				
			||||||
 | 
								poll: null
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue