diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-10-31 11:17:24 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-31 11:17:24 +0900 |
| commit | 5e3372e9329883aefa19fa572715077d79eac5be (patch) | |
| tree | c259467122fa4d2add35aa413b4e9986ab6fd7ce /src/models | |
| parent | Implement /api/v1/instance (#3045) (diff) | |
| parent | 良い感じに (diff) | |
| download | sharkey-5e3372e9329883aefa19fa572715077d79eac5be.tar.gz sharkey-5e3372e9329883aefa19fa572715077d79eac5be.tar.bz2 sharkey-5e3372e9329883aefa19fa572715077d79eac5be.zip | |
Merge pull request #3047 from mei23/mei-1031-blokings-list
blockings list
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/blocking.ts | 41 | ||||
| -rw-r--r-- | src/models/mute.ts | 41 |
2 files changed, 82 insertions, 0 deletions
diff --git a/src/models/blocking.ts b/src/models/blocking.ts index 2974b53554..3eace3989a 100644 --- a/src/models/blocking.ts +++ b/src/models/blocking.ts @@ -1,7 +1,12 @@ import * as mongo from 'mongodb'; import db from '../db/mongodb'; +import isObjectId from '../misc/is-objectid'; +const deepcopy = require('deepcopy'); +import { pack as packUser } from './user'; const Blocking = db.get<IBlocking>('blocking'); +Blocking.createIndex('blockerId'); +Blocking.createIndex('blockeeId'); Blocking.createIndex(['blockerId', 'blockeeId'], { unique: true }); export default Blocking; @@ -11,3 +16,39 @@ export type IBlocking = { blockeeId: mongo.ObjectID; blockerId: mongo.ObjectID; }; + +export const packMany = async ( + blockings: (string | mongo.ObjectID | IBlocking)[], + me?: string | mongo.ObjectID | IUser +) => { + return (await Promise.all(blockings.map(x => pack(x, me)))).filter(x => x != null); +}; + +export const pack = ( + blocking: any, + me?: any +) => new Promise<any>(async (resolve, reject) => { + let _blocking: any; + + // Populate the blocking if 'blocking' is ID + if (isObjectId(blocking)) { + _blocking = await Blocking.findOne({ + _id: blocking + }); + } else if (typeof blocking === 'string') { + _blocking = await Blocking.findOne({ + _id: new mongo.ObjectID(blocking) + }); + } else { + _blocking = deepcopy(blocking); + } + + // Rename _id to id + _blocking.id = _blocking._id; + delete _blocking._id; + + // Populate blockee + _blocking.blockee = await packUser(_blocking.blockeeId, me); + + resolve(_blocking); +}); diff --git a/src/models/mute.ts b/src/models/mute.ts index 4bad3d3d31..58536d4b9c 100644 --- a/src/models/mute.ts +++ b/src/models/mute.ts @@ -1,7 +1,12 @@ import * as mongo from 'mongodb'; import db from '../db/mongodb'; +import isObjectId from '../misc/is-objectid'; +const deepcopy = require('deepcopy'); +import { pack as packUser } from './user'; const Mute = db.get<IMute>('mute'); +Mute.createIndex('muterId'); +Mute.createIndex('muteeId'); Mute.createIndex(['muterId', 'muteeId'], { unique: true }); export default Mute; @@ -11,3 +16,39 @@ export interface IMute { muterId: mongo.ObjectID; muteeId: mongo.ObjectID; } + +export const packMany = async ( + mutes: (string | mongo.ObjectID | IMute)[], + me?: string | mongo.ObjectID | IUser +) => { + return (await Promise.all(mutes.map(x => pack(x, me)))).filter(x => x != null); +}; + +export const pack = ( + mute: any, + me?: any +) => new Promise<any>(async (resolve, reject) => { + let _mute: any; + + // Populate the mute if 'mute' is ID + if (isObjectId(mute)) { + _mute = await Mute.findOne({ + _id: mute + }); + } else if (typeof mute === 'string') { + _mute = await Mute.findOne({ + _id: new mongo.ObjectID(mute) + }); + } else { + _mute = deepcopy(mute); + } + + // Rename _id to id + _mute.id = _mute._id; + delete _mute._id; + + // Populate mutee + _mute.mutee = await packUser(_mute.muteeId, me); + + resolve(_mute); +}); |