This commit is contained in:
こぴなたみぽ 2018-04-12 07:19:28 +09:00
parent a015524cb5
commit 991635f919
3 changed files with 40 additions and 1 deletions

View file

@ -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 })

View file

@ -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
});
}

View file

@ -15,6 +15,7 @@ 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';
const User = db.get<IUser>('users'); const User = db.get<IUser>('users');
@ -171,6 +172,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 })