node-go/packages/server/data/queries/game.js
2020-06-20 16:25:09 -07:00

91 lines
1.6 KiB
JavaScript

const knex = require("../db");
const gameDetailSelect = [
"game.id",
"application",
"application_version",
"board_size",
"komi",
"handicap",
"open",
"win_type",
"player_black",
"player_black_rank",
"player_white",
"player_white_rank",
"captures_black",
"captures_white",
"score",
"win_type",
"description",
"event",
"round",
"name",
"room",
];
const timeSettingSelect = [
"main_time",
"time_period",
"period_length",
"overtime",
"overtime_period",
"overtime_length",
];
const gameOverviewSelect = [
"id",
"board_size",
"komi",
"handicap",
"open",
"win_type",
"player_black",
"player_black_rank",
"player_white",
"player_white_rank",
];
const findGameById = async function (gameId) {
const selection = gameDetailSelect.concat(timeSettingSelect);
const game = await knex
.from("game")
.select(selection)
.where({ "game.id": gameId })
.leftJoin("time_setting", function () {
this.on("time_setting.id", "=", "game.time_setting");
});
return game[0];
};
const findGameByRoom = async (roomId) => {
const games = await knex("game")
.where({ room: roomId })
.select(gameOverviewSelect);
return games;
};
const insertGame = async (game) => {};
const endGame = async ({ id }) => {
const game = await knex(game).where({ id: id }).update(
{
win_type: winType,
score: score,
captures_black: capturesBlack,
captures_white: capturesWhite,
}
// ["id"]
);
return game;
};
module.exports = {
findGameById,
findGameByRoom,
insertGame,
endGame,
};