なんかもうめっちゃ変えた
This commit is contained in:
@@ -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
|
||||
}))));
|
||||
});
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user