34 lines
826 B
TypeScript
34 lines
826 B
TypeScript
import $ from 'cafy';
|
|
import Session from '../../../models/othello-session';
|
|
import Game, { pack } from '../../../models/othello-game';
|
|
|
|
module.exports = (params, user) => new Promise(async (res, rej) => {
|
|
// Get 'code' parameter
|
|
const [code, codeErr] = $(params.code).string().$;
|
|
if (codeErr) return rej('invalid code param');
|
|
|
|
// Fetch session
|
|
const session = await Session.findOne({ code });
|
|
|
|
if (session == null) {
|
|
return rej('session not found');
|
|
}
|
|
|
|
// Destroy session
|
|
Session.remove({
|
|
_id: session._id
|
|
});
|
|
|
|
const parentIsBlack = Math.random() > 0.5;
|
|
|
|
// Start game
|
|
const game = await Game.insert({
|
|
created_at: new Date(),
|
|
black_user_id: parentIsBlack ? session.user_id : user._id,
|
|
white_user_id: parentIsBlack ? user._id : session.user_id,
|
|
logs: []
|
|
});
|
|
|
|
// Reponse
|
|
res(await pack(game));
|
|
});
|