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/blocking.ts | |
| 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/blocking.ts')
| -rw-r--r-- | src/models/blocking.ts | 41 |
1 files changed, 41 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); +}); |