wip
This commit is contained in:
		
							parent
							
								
									9c2f340c1e
								
							
						
					
					
						commit
						0ef280377b
					
				
					 3 changed files with 46 additions and 3 deletions
				
			
		| 
						 | 
					@ -5,13 +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, { deletePollVote } from './poll-vote';
 | 
					import PollVote, { 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';
 | 
					import Notification, { deleteNotification } from './notification';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Note = db.get<INote>('notes');
 | 
					const Note = db.get<INote>('notes');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -123,6 +123,11 @@ export async function deleteNote(note: string | mongo.ObjectID | INote) {
 | 
				
			||||||
		await Favorite.find({ noteId: n._id })
 | 
							await Favorite.find({ noteId: n._id })
 | 
				
			||||||
	).map(x => deleteFavorite(x)));
 | 
						).map(x => deleteFavorite(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// この投稿に対するNotificationをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await Notification.find({ noteId: n._id })
 | 
				
			||||||
 | 
						).map(x => deleteNotification(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このNoteを削除
 | 
						// このNoteを削除
 | 
				
			||||||
	await Note.remove({
 | 
						await Note.remove({
 | 
				
			||||||
		_id: n._id
 | 
							_id: n._id
 | 
				
			||||||
| 
						 | 
					@ -258,7 +263,7 @@ export const pack = async (
 | 
				
			||||||
		// Poll
 | 
							// Poll
 | 
				
			||||||
		if (meId && _note.poll) {
 | 
							if (meId && _note.poll) {
 | 
				
			||||||
			_note.poll = (async (poll) => {
 | 
								_note.poll = (async (poll) => {
 | 
				
			||||||
				const vote = await Vote
 | 
									const vote = await PollVote
 | 
				
			||||||
					.findOne({
 | 
										.findOne({
 | 
				
			||||||
						userId: meId,
 | 
											userId: meId,
 | 
				
			||||||
						noteId: id
 | 
											noteId: id
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,33 @@ export interface INotification {
 | 
				
			||||||
	isRead: Boolean;
 | 
						isRead: Boolean;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Notificationを物理削除します
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export async function deleteNotification(notification: string | mongo.ObjectID | INotification) {
 | 
				
			||||||
 | 
						let n: INotification;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate
 | 
				
			||||||
 | 
						if (mongo.ObjectID.prototype.isPrototypeOf(notification)) {
 | 
				
			||||||
 | 
							n = await Notification.findOne({
 | 
				
			||||||
 | 
								_id: notification
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else if (typeof notification === 'string') {
 | 
				
			||||||
 | 
							n = await Notification.findOne({
 | 
				
			||||||
 | 
								_id: new mongo.ObjectID(notification)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							n = notification as INotification;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (n == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このNotificationを削除
 | 
				
			||||||
 | 
						await Notification.remove({
 | 
				
			||||||
 | 
							_id: n._id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Pack a notification for API response
 | 
					 * Pack a notification for API response
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@ import PollVote, { deletePollVote } from './poll-vote';
 | 
				
			||||||
import FollowingLog, { deleteFollowingLog } from './following-log';
 | 
					import FollowingLog, { deleteFollowingLog } from './following-log';
 | 
				
			||||||
import FollowedLog, { deleteFollowedLog } from './followed-log';
 | 
					import FollowedLog, { deleteFollowedLog } from './followed-log';
 | 
				
			||||||
import SwSubscription, { deleteSwSubscription } from './sw-subscription';
 | 
					import SwSubscription, { deleteSwSubscription } from './sw-subscription';
 | 
				
			||||||
 | 
					import Notification, { deleteNotification } from './notification';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const User = db.get<IUser>('users');
 | 
					const User = db.get<IUser>('users');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -246,6 +247,16 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
 | 
				
			||||||
		await SwSubscription.find({ userId: u._id })
 | 
							await SwSubscription.find({ userId: u._id })
 | 
				
			||||||
	).map(x => deleteSwSubscription(x)));
 | 
						).map(x => deleteSwSubscription(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このユーザーのNotificationをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await Notification.find({ notifieeId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteNotification(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// このユーザーが原因となったNotificationをすべて削除
 | 
				
			||||||
 | 
						await Promise.all((
 | 
				
			||||||
 | 
							await Notification.find({ notifierId: u._id })
 | 
				
			||||||
 | 
						).map(x => deleteNotification(x)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// このユーザーを削除
 | 
						// このユーザーを削除
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue