mirror of
https://codeberg.org/yeentown/barkey
synced 2024-11-27 13:53:02 +00:00
wip
This commit is contained in:
parent
9e74a3b8fa
commit
03c824f893
2 changed files with 55 additions and 0 deletions
40
src/models/user-list.ts
Normal file
40
src/models/user-list.ts
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
import * as mongo from 'mongodb';
|
||||||
|
import db from '../db/mongodb';
|
||||||
|
|
||||||
|
const UserList = db.get<IUserList>('userList');
|
||||||
|
export default UserList;
|
||||||
|
|
||||||
|
export interface IUserList {
|
||||||
|
_id: mongo.ObjectID;
|
||||||
|
createdAt: Date;
|
||||||
|
title: string;
|
||||||
|
userId: mongo.ObjectID;
|
||||||
|
userIds: mongo.ObjectID[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UserListを物理削除します
|
||||||
|
*/
|
||||||
|
export async function deleteUserList(userList: string | mongo.ObjectID | IUserList) {
|
||||||
|
let u: IUserList;
|
||||||
|
|
||||||
|
// Populate
|
||||||
|
if (mongo.ObjectID.prototype.isPrototypeOf(userList)) {
|
||||||
|
u = await UserList.findOne({
|
||||||
|
_id: userList
|
||||||
|
});
|
||||||
|
} else if (typeof userList === 'string') {
|
||||||
|
u = await UserList.findOne({
|
||||||
|
_id: new mongo.ObjectID(userList)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
u = userList as IUserList;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (u == null) return;
|
||||||
|
|
||||||
|
// このUserListを削除
|
||||||
|
await UserList.remove({
|
||||||
|
_id: u._id
|
||||||
|
});
|
||||||
|
}
|
|
@ -20,6 +20,7 @@ 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';
|
import Notification, { deleteNotification } from './notification';
|
||||||
|
import UserList, { deleteUserList } from './user-list';
|
||||||
|
|
||||||
const User = db.get<IUser>('users');
|
const User = db.get<IUser>('users');
|
||||||
|
|
||||||
|
@ -260,6 +261,20 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
|
||||||
await Notification.find({ notifierId: u._id })
|
await Notification.find({ notifierId: u._id })
|
||||||
).map(x => deleteNotification(x)));
|
).map(x => deleteNotification(x)));
|
||||||
|
|
||||||
|
// このユーザーのUserListをすべて削除
|
||||||
|
await Promise.all((
|
||||||
|
await UserList.find({ userId: u._id })
|
||||||
|
).map(x => deleteUserList(x)));
|
||||||
|
|
||||||
|
// このユーザーの入っているすべてのUserListからこのユーザーを削除
|
||||||
|
await Promise.all((
|
||||||
|
await UserList.find({ userIds: u._id })
|
||||||
|
).map(x =>
|
||||||
|
UserList.update({ _id: x._id }, {
|
||||||
|
$pull: { userIds: u._id }
|
||||||
|
})
|
||||||
|
));
|
||||||
|
|
||||||
// このユーザーを削除
|
// このユーザーを削除
|
||||||
await User.remove({
|
await User.remove({
|
||||||
_id: u._id
|
_id: u._id
|
||||||
|
|
Loading…
Reference in a new issue