From 155012846d8f142515390adb2754b45cdfbb74ef Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 8 Mar 2018 17:57:57 +0900 Subject: #1200 --- src/api/models/othello-game.ts | 43 +++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) (limited to 'src/api/models') diff --git a/src/api/models/othello-game.ts b/src/api/models/othello-game.ts index 73a5c94b21..de7c804c46 100644 --- a/src/api/models/othello-game.ts +++ b/src/api/models/othello-game.ts @@ -2,6 +2,7 @@ import * as mongo from 'mongodb'; import deepcopy = require('deepcopy'); import db from '../../db/mongodb'; import { IUser, pack as packUser } from './user'; +import { Map } from '../../common/othello/maps'; const Game = db.get('othello_games'); export default Game; @@ -9,12 +10,28 @@ export default Game; export interface IGame { _id: mongo.ObjectID; created_at: Date; - black_user_id: mongo.ObjectID; - white_user_id: mongo.ObjectID; - turn_user_id: mongo.ObjectID; + started_at: Date; + user1_id: mongo.ObjectID; + user2_id: mongo.ObjectID; + user1_accepted: boolean; + user2_accepted: boolean; + + /** + * どちらのプレイヤーが先行(黒)か + * 1 ... user1 + * 2 ... user2 + */ + black: number; + + is_started: boolean; is_ended: boolean; winner_id: mongo.ObjectID; logs: any[]; + settings: { + map: Map; + bw: string | number; + is_llotheo: boolean; + }; } /** @@ -24,6 +41,20 @@ export const pack = ( game: any, me?: string | mongo.ObjectID | IUser ) => new Promise(async (resolve, reject) => { + let _game: any; + + // Populate the game if 'game' is ID + if (mongo.ObjectID.prototype.isPrototypeOf(game)) { + _game = await Game.findOne({ + _id: game + }); + } else if (typeof game === 'string') { + _game = await Game.findOne({ + _id: new mongo.ObjectID(game) + }); + } else { + _game = deepcopy(game); + } // Me const meId: mongo.ObjectID = me @@ -34,15 +65,13 @@ export const pack = ( : (me as IUser)._id : null; - const _game = deepcopy(game); - // Rename _id to id _game.id = _game._id; delete _game._id; // Populate user - _game.black_user = await packUser(_game.black_user_id, meId); - _game.white_user = await packUser(_game.white_user_id, meId); + _game.user1 = await packUser(_game.user1_id, meId); + _game.user2 = await packUser(_game.user2_id, meId); if (_game.winner_id) { _game.winner = await packUser(_game.winner_id, meId); } else { -- cgit v1.2.3-freya