Merge branch 'master' of https://github.com/syuilo/misskey
This commit is contained in:
		
						commit
						0cf7c76d2c
					
				
					 7 changed files with 176 additions and 8 deletions
				
			
		| 
						 | 
					@ -1,12 +1,39 @@
 | 
				
			||||||
import { ObjectID } from 'mongodb';
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import db from '../db/mongodb';
 | 
					import db from '../db/mongodb';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const FollowedLog = db.get<IFollowedLog>('followedLogs');
 | 
					const FollowedLog = db.get<IFollowedLog>('followedLogs');
 | 
				
			||||||
export default FollowedLog;
 | 
					export default FollowedLog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type IFollowedLog = {
 | 
					export type IFollowedLog = {
 | 
				
			||||||
	_id: ObjectID;
 | 
						_id: mongo.ObjectID;
 | 
				
			||||||
	createdAt: Date;
 | 
						createdAt: Date;
 | 
				
			||||||
	userId: ObjectID;
 | 
						userId: mongo.ObjectID;
 | 
				
			||||||
	count: number;
 | 
						count: number;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * FollowedLogを物理削除します
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export async function deleteFollowedLog(followedLog: string | mongo.ObjectID | IFollowedLog) {
 | 
				
			||||||
 | 
						let f: IFollowedLog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate
 | 
				
			||||||
 | 
						if (mongo.ObjectID.prototype.isPrototypeOf(followedLog)) {
 | 
				
			||||||
 | 
							f = await FollowedLog.findOne({
 | 
				
			||||||
 | 
								_id: followedLog
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else if (typeof followedLog === 'string') {
 | 
				
			||||||
 | 
							f = await FollowedLog.findOne({
 | 
				
			||||||
 | 
								_id: new mongo.ObjectID(followedLog)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							f = followedLog as IFollowedLog;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (f == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このFollowedLogを削除
 | 
				
			||||||
 | 
						await FollowedLog.remove({
 | 
				
			||||||
 | 
							_id: f._id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,39 @@
 | 
				
			||||||
import { ObjectID } from 'mongodb';
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import db from '../db/mongodb';
 | 
					import db from '../db/mongodb';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const FollowingLog = db.get<IFollowingLog>('followingLogs');
 | 
					const FollowingLog = db.get<IFollowingLog>('followingLogs');
 | 
				
			||||||
export default FollowingLog;
 | 
					export default FollowingLog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type IFollowingLog = {
 | 
					export type IFollowingLog = {
 | 
				
			||||||
	_id: ObjectID;
 | 
						_id: mongo.ObjectID;
 | 
				
			||||||
	createdAt: Date;
 | 
						createdAt: Date;
 | 
				
			||||||
	userId: ObjectID;
 | 
						userId: mongo.ObjectID;
 | 
				
			||||||
	count: number;
 | 
						count: number;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * FollowingLogを物理削除します
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export async function deleteFollowingLog(followingLog: string | mongo.ObjectID | IFollowingLog) {
 | 
				
			||||||
 | 
						let f: IFollowingLog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate
 | 
				
			||||||
 | 
						if (mongo.ObjectID.prototype.isPrototypeOf(followingLog)) {
 | 
				
			||||||
 | 
							f = await FollowingLog.findOne({
 | 
				
			||||||
 | 
								_id: followingLog
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else if (typeof followingLog === 'string') {
 | 
				
			||||||
 | 
							f = await FollowingLog.findOne({
 | 
				
			||||||
 | 
								_id: new mongo.ObjectID(followingLog)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							f = followingLog as IFollowingLog;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (f == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このFollowingLogを削除
 | 
				
			||||||
 | 
						await FollowingLog.remove({
 | 
				
			||||||
 | 
							_id: f._id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,3 +11,30 @@ export type IFollowing = {
 | 
				
			||||||
	followeeId: mongo.ObjectID;
 | 
						followeeId: mongo.ObjectID;
 | 
				
			||||||
	followerId: mongo.ObjectID;
 | 
						followerId: mongo.ObjectID;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Followingを物理削除します
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export async function deleteFollowing(following: string | mongo.ObjectID | IFollowing) {
 | 
				
			||||||
 | 
						let f: IFollowing;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate
 | 
				
			||||||
 | 
						if (mongo.ObjectID.prototype.isPrototypeOf(following)) {
 | 
				
			||||||
 | 
							f = await Following.findOne({
 | 
				
			||||||
 | 
								_id: following
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else if (typeof following === 'string') {
 | 
				
			||||||
 | 
							f = await Following.findOne({
 | 
				
			||||||
 | 
								_id: new mongo.ObjectID(following)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							f = following as IFollowing;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (f == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このFollowingを削除
 | 
				
			||||||
 | 
						await Following.remove({
 | 
				
			||||||
 | 
							_id: f._id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,12 +5,13 @@ import db from '../db/mongodb';
 | 
				
			||||||
import { IUser, pack as packUser } from './user';
 | 
					import { IUser, pack as packUser } from './user';
 | 
				
			||||||
import { pack as packApp } from './app';
 | 
					import { pack as packApp } from './app';
 | 
				
			||||||
import { pack as packChannel } from './channel';
 | 
					import { pack as packChannel } from './channel';
 | 
				
			||||||
import Vote from './poll-vote';
 | 
					import Vote, { deletePollVote } from './poll-vote';
 | 
				
			||||||
import Reaction, { deleteNoteReaction } from './note-reaction';
 | 
					import Reaction, { deleteNoteReaction } from './note-reaction';
 | 
				
			||||||
import { pack as packFile } from './drive-file';
 | 
					import { pack as packFile } from './drive-file';
 | 
				
			||||||
import NoteWatching, { deleteNoteWatching } from './note-watching';
 | 
					import NoteWatching, { deleteNoteWatching } from './note-watching';
 | 
				
			||||||
import NoteReaction from './note-reaction';
 | 
					import NoteReaction from './note-reaction';
 | 
				
			||||||
import Favorite, { deleteFavorite } from './favorite';
 | 
					import Favorite, { deleteFavorite } from './favorite';
 | 
				
			||||||
 | 
					import PollVote from './poll-vote';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Note = db.get<INote>('notes');
 | 
					const Note = db.get<INote>('notes');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -113,6 +114,11 @@ export async function deleteNote(note: string | mongo.ObjectID | INote) {
 | 
				
			||||||
		await NoteReaction.find({ noteId: n._id })
 | 
							await NoteReaction.find({ noteId: n._id })
 | 
				
			||||||
	).map(x => deleteNoteReaction(x)));
 | 
						).map(x => deleteNoteReaction(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// この投稿に対するPollVoteをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await PollVote.find({ noteId: n._id })
 | 
				
			||||||
 | 
						).map(x => deletePollVote(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// この投稿に対するFavoriteをすべて削除
 | 
						// この投稿に対するFavoriteをすべて削除
 | 
				
			||||||
	await Promise.all((
 | 
						await Promise.all((
 | 
				
			||||||
		await Favorite.find({ noteId: n._id })
 | 
							await Favorite.find({ noteId: n._id })
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,3 +11,30 @@ export interface IPollVote {
 | 
				
			||||||
	noteId: mongo.ObjectID;
 | 
						noteId: mongo.ObjectID;
 | 
				
			||||||
	choice: number;
 | 
						choice: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * PollVoteを物理削除します
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export async function deletePollVote(pollVote: string | mongo.ObjectID | IPollVote) {
 | 
				
			||||||
 | 
						let p: IPollVote;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate
 | 
				
			||||||
 | 
						if (mongo.ObjectID.prototype.isPrototypeOf(pollVote)) {
 | 
				
			||||||
 | 
							p = await PollVote.findOne({
 | 
				
			||||||
 | 
								_id: pollVote
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else if (typeof pollVote === 'string') {
 | 
				
			||||||
 | 
							p = await PollVote.findOne({
 | 
				
			||||||
 | 
								_id: new mongo.ObjectID(pollVote)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							p = pollVote as IPollVote;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (p == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このPollVoteを削除
 | 
				
			||||||
 | 
						await PollVote.remove({
 | 
				
			||||||
 | 
							_id: p._id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,3 +11,31 @@ export interface ISwSubscription {
 | 
				
			||||||
	auth: string;
 | 
						auth: string;
 | 
				
			||||||
	publickey: string;
 | 
						publickey: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * SwSubscriptionを物理削除します
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export async function deleteSwSubscription(swSubscription: string | mongo.ObjectID | ISwSubscription) {
 | 
				
			||||||
 | 
						let s: ISwSubscription;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate
 | 
				
			||||||
 | 
						if (mongo.ObjectID.prototype.isPrototypeOf(swSubscription)) {
 | 
				
			||||||
 | 
							s = await SwSubscription.findOne({
 | 
				
			||||||
 | 
								_id: swSubscription
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else if (typeof swSubscription === 'string') {
 | 
				
			||||||
 | 
							s = await SwSubscription.findOne({
 | 
				
			||||||
 | 
								_id: new mongo.ObjectID(swSubscription)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							s = swSubscription as ISwSubscription;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (s == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このSwSubscriptionを削除
 | 
				
			||||||
 | 
						await SwSubscription.remove({
 | 
				
			||||||
 | 
							_id: s._id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@ import deepcopy = require('deepcopy');
 | 
				
			||||||
import rap from '@prezzemolo/rap';
 | 
					import rap from '@prezzemolo/rap';
 | 
				
			||||||
import db from '../db/mongodb';
 | 
					import db from '../db/mongodb';
 | 
				
			||||||
import Note, { INote, pack as packNote, deleteNote } from './note';
 | 
					import Note, { INote, pack as packNote, deleteNote } from './note';
 | 
				
			||||||
import Following from './following';
 | 
					import Following, { deleteFollowing } from './following';
 | 
				
			||||||
import Mute, { deleteMute } from './mute';
 | 
					import Mute, { deleteMute } from './mute';
 | 
				
			||||||
import getFriends from '../server/api/common/get-friends';
 | 
					import getFriends from '../server/api/common/get-friends';
 | 
				
			||||||
import config from '../config';
 | 
					import config from '../config';
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,10 @@ import MessagingMessage, { deleteMessagingMessage } from './messaging-message';
 | 
				
			||||||
import MessagingHistory, { deleteMessagingHistory } from './messaging-history';
 | 
					import MessagingHistory, { deleteMessagingHistory } from './messaging-history';
 | 
				
			||||||
import DriveFile, { deleteDriveFile } from './drive-file';
 | 
					import DriveFile, { deleteDriveFile } from './drive-file';
 | 
				
			||||||
import DriveFolder, { deleteDriveFolder } from './drive-folder';
 | 
					import DriveFolder, { deleteDriveFolder } from './drive-folder';
 | 
				
			||||||
 | 
					import PollVote, { deletePollVote } from './poll-vote';
 | 
				
			||||||
 | 
					import FollowingLog, { deleteFollowingLog } from './following-log';
 | 
				
			||||||
 | 
					import FollowedLog, { deleteFollowedLog } from './followed-log';
 | 
				
			||||||
 | 
					import SwSubscription, { deleteSwSubscription } from './sw-subscription';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const User = db.get<IUser>('users');
 | 
					const User = db.get<IUser>('users');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -171,6 +175,11 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
 | 
				
			||||||
		await NoteWatching.find({ userId: u._id })
 | 
							await NoteWatching.find({ userId: u._id })
 | 
				
			||||||
	).map(x => deleteNoteWatching(x)));
 | 
						).map(x => deleteNoteWatching(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このユーザーのPollVoteをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await PollVote.find({ userId: u._id })
 | 
				
			||||||
 | 
						).map(x => deletePollVote(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーのFavoriteをすべて削除
 | 
						// このユーザーのFavoriteをすべて削除
 | 
				
			||||||
	await Promise.all((
 | 
						await Promise.all((
 | 
				
			||||||
		await Favorite.find({ userId: u._id })
 | 
							await Favorite.find({ userId: u._id })
 | 
				
			||||||
| 
						 | 
					@ -212,12 +221,29 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
 | 
				
			||||||
	).map(x => deleteMute(x)));
 | 
						).map(x => deleteMute(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーのFollowingをすべて削除
 | 
						// このユーザーのFollowingをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await Following.find({ followerId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteFollowing(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーへのFollowingをすべて削除
 | 
						// このユーザーへのFollowingをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await Following.find({ followeeId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteFollowing(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーのFollowingLogをすべて削除
 | 
						// このユーザーのFollowingLogをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await FollowingLog.find({ userId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteFollowingLog(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーのFollowedLogをすべて削除
 | 
						// このユーザーのFollowedLogをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await FollowedLog.find({ userId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteFollowedLog(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このユーザーのSwSubscriptionをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await SwSubscription.find({ userId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteSwSubscription(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーを削除
 | 
						// このユーザーを削除
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue