diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-03-09 18:11:10 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-03-09 18:11:10 +0900 |
| commit | 910ccf1804033a940a36273e21d4a586a26a6145 (patch) | |
| tree | 8ed2d2351216d79a812aba65646c307c422f14cc /src/api | |
| parent | v4046 (diff) | |
| download | sharkey-910ccf1804033a940a36273e21d4a586a26a6145.tar.gz sharkey-910ccf1804033a940a36273e21d4a586a26a6145.tar.bz2 sharkey-910ccf1804033a940a36273e21d4a586a26a6145.zip | |
なんかもうめっちゃ変えた
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/endpoints/othello/games.ts | 41 | ||||
| -rw-r--r-- | src/api/endpoints/othello/match.ts | 2 | ||||
| -rw-r--r-- | src/api/models/othello-game.ts | 16 |
3 files changed, 52 insertions, 7 deletions
diff --git a/src/api/endpoints/othello/games.ts b/src/api/endpoints/othello/games.ts index dd9fb5ef52..dd3ee523a8 100644 --- a/src/api/endpoints/othello/games.ts +++ b/src/api/endpoints/othello/games.ts @@ -6,6 +6,23 @@ module.exports = (params, user) => new Promise(async (res, rej) => { const [my = false, myErr] = $(params.my).optional.boolean().$; if (myErr) return rej('invalid my param'); + // Get 'limit' parameter + const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$; + if (limitErr) return rej('invalid limit param'); + + // Get 'since_id' parameter + const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$; + if (sinceIdErr) return rej('invalid since_id param'); + + // Get 'until_id' parameter + const [untilId, untilIdErr] = $(params.until_id).optional.id().$; + if (untilIdErr) return rej('invalid until_id param'); + + // Check if both of since_id and until_id is specified + if (sinceId && untilId) { + return rej('cannot set since_id and until_id'); + } + const q = my ? { is_started: true, $or: [{ @@ -17,13 +34,29 @@ module.exports = (params, user) => new Promise(async (res, rej) => { is_started: true }; + + const sort = { + _id: -1 + }; + + if (sinceId) { + sort._id = 1; + q._id = { + $gt: sinceId + }; + } else if (untilId) { + q._id = { + $lt: untilId + }; + } + // Fetch games const games = await Game.find(q, { - sort: { - _id: -1 - } + sort }); // Reponse - res(Promise.all(games.map(async (g) => await pack(g, user)))); + res(Promise.all(games.map(async (g) => await pack(g, user, { + detail: false + })))); }); diff --git a/src/api/endpoints/othello/match.ts b/src/api/endpoints/othello/match.ts index 05b87a541a..640be9cb57 100644 --- a/src/api/endpoints/othello/match.ts +++ b/src/api/endpoints/othello/match.ts @@ -38,7 +38,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => { is_ended: false, logs: [], settings: { - map: eighteight, + map: eighteight.data, bw: 'random', is_llotheo: false } diff --git a/src/api/models/othello-game.ts b/src/api/models/othello-game.ts index de7c804c46..7ae48b8aab 100644 --- a/src/api/models/othello-game.ts +++ b/src/api/models/othello-game.ts @@ -28,7 +28,7 @@ export interface IGame { winner_id: mongo.ObjectID; logs: any[]; settings: { - map: Map; + map: string[]; bw: string | number; is_llotheo: boolean; }; @@ -39,8 +39,15 @@ export interface IGame { */ export const pack = ( game: any, - me?: string | mongo.ObjectID | IUser + me?: string | mongo.ObjectID | IUser, + options?: { + detail?: boolean + } ) => new Promise<any>(async (resolve, reject) => { + const opts = Object.assign({ + detail: true + }, options); + let _game: any; // Populate the game if 'game' is ID @@ -69,6 +76,11 @@ export const pack = ( _game.id = _game._id; delete _game._id; + if (opts.detail === false) { + delete _game.logs; + delete _game.settings.map; + } + // Populate user _game.user1 = await packUser(_game.user1_id, meId); _game.user2 = await packUser(_game.user2_id, meId); |