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…
Reference in a new issue