diff options
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/follow-request.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/models/follow-request.ts b/src/models/follow-request.ts index 0de4b8e3af..0cdb8b4f47 100644 --- a/src/models/follow-request.ts +++ b/src/models/follow-request.ts @@ -1,5 +1,7 @@ import * as mongo from 'mongodb'; +import * as deepcopy from 'deepcopy'; import db from '../db/mongodb'; +import { pack as packUser } from './user'; const FollowRequest = db.get<IFollowRequest>('followRequests'); FollowRequest.createIndex(['followerId', 'followeeId'], { unique: true }); @@ -48,3 +50,38 @@ export async function deleteFollowRequest(followRequest: string | mongo.ObjectID _id: f._id }); } + +/** + * Pack a request for API response + */ +export const pack = ( + request: any, + me?: any +) => new Promise<any>(async (resolve, reject) => { + let _request: any; + + // Populate the request if 'request' is ID + if (mongo.ObjectID.prototype.isPrototypeOf(request)) { + _request = await FollowRequest.findOne({ + _id: request + }); + } else if (typeof request === 'string') { + _request = await FollowRequest.findOne({ + _id: new mongo.ObjectID(request) + }); + } else { + _request = deepcopy(request); + } + + // Rename _id to id + _request.id = _request._id; + delete _request._id; + + // Populate follower + _request.followerId = await packUser(_request.followerId, me); + + // Populate followee + _request.followeeId = await packUser(_request.followeeId, me); + + resolve(_request); +}); |