summaryrefslogtreecommitdiff
path: root/src/models/follow-request.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-06-02 00:51:20 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-06-02 00:51:20 +0900
commita26c19cbd2f3e9efbe9155895cd01e803e8c7b59 (patch)
tree017a9fdc1756b28b47647b6a8334906f01bde36f /src/models/follow-request.ts
parentwip (diff)
downloadsharkey-a26c19cbd2f3e9efbe9155895cd01e803e8c7b59.tar.gz
sharkey-a26c19cbd2f3e9efbe9155895cd01e803e8c7b59.tar.bz2
sharkey-a26c19cbd2f3e9efbe9155895cd01e803e8c7b59.zip
wip
Diffstat (limited to 'src/models/follow-request.ts')
-rw-r--r--src/models/follow-request.ts37
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);
+});