summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-03-09 18:11:10 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-03-09 18:11:10 +0900
commit910ccf1804033a940a36273e21d4a586a26a6145 (patch)
tree8ed2d2351216d79a812aba65646c307c422f14cc /src/api
parentv4046 (diff)
downloadsharkey-910ccf1804033a940a36273e21d4a586a26a6145.tar.gz
sharkey-910ccf1804033a940a36273e21d4a586a26a6145.tar.bz2
sharkey-910ccf1804033a940a36273e21d4a586a26a6145.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'src/api')
-rw-r--r--src/api/endpoints/othello/games.ts41
-rw-r--r--src/api/endpoints/othello/match.ts2
-rw-r--r--src/api/models/othello-game.ts16
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);