summaryrefslogtreecommitdiff
path: root/src/api/models/othello-matching.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-03-07 19:00:15 +0900
committerGitHub <noreply@github.com>2018-03-07 19:00:15 +0900
commita227ef30e8bc8282605361b013d323bb3bbc4e7d (patch)
tree8bd28f1d27a77e061e7b7f56f8794e483fe82f8f /src/api/models/othello-matching.ts
parentv3999 (diff)
parentoops (diff)
downloadsharkey-a227ef30e8bc8282605361b013d323bb3bbc4e7d.tar.gz
sharkey-a227ef30e8bc8282605361b013d323bb3bbc4e7d.tar.bz2
sharkey-a227ef30e8bc8282605361b013d323bb3bbc4e7d.zip
Merge pull request #1197 from syuilo/othello
Othello
Diffstat (limited to 'src/api/models/othello-matching.ts')
-rw-r--r--src/api/models/othello-matching.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/api/models/othello-matching.ts b/src/api/models/othello-matching.ts
new file mode 100644
index 0000000000..89fcd6df6a
--- /dev/null
+++ b/src/api/models/othello-matching.ts
@@ -0,0 +1,42 @@
+import * as mongo from 'mongodb';
+import deepcopy = require('deepcopy');
+import db from '../../db/mongodb';
+import { IUser, pack as packUser } from './user';
+
+const Matching = db.get<IMatching>('othello_matchings');
+export default Matching;
+
+export interface IMatching {
+ _id: mongo.ObjectID;
+ created_at: Date;
+ parent_id: mongo.ObjectID;
+ child_id: mongo.ObjectID;
+}
+
+/**
+ * Pack an othello matching for API response
+ */
+export const pack = (
+ matching: any,
+ me?: string | mongo.ObjectID | IUser
+) => new Promise<any>(async (resolve, reject) => {
+
+ // Me
+ const meId: mongo.ObjectID = me
+ ? mongo.ObjectID.prototype.isPrototypeOf(me)
+ ? me as mongo.ObjectID
+ : typeof me === 'string'
+ ? new mongo.ObjectID(me)
+ : (me as IUser)._id
+ : null;
+
+ const _matching = deepcopy(matching);
+
+ delete _matching._id;
+
+ // Populate user
+ _matching.parent = await packUser(_matching.parent_id, meId);
+ _matching.child = await packUser(_matching.child_id, meId);
+
+ resolve(_matching);
+});