Added Crud Rest API for guest players, unknown players in saved games are automatically added as guests. Games are now as such saved correctly. More decoupling from models. Updated express for better error handling.

This commit is contained in:
Daniel Ledda
2020-05-25 22:57:36 +02:00
parent 3a7e7de3d4
commit 4ccbdf599e
15 changed files with 483 additions and 140 deletions

View File

@@ -2,12 +2,22 @@ import passport from "passport";
import DbUser, {IDbUser, IDbUserDoc} from "../models/dbUser";
import {RequestHandler} from "express";
import SavedGame from "../models/savedGame";
import Player, {IPlayer} from "../models/player";
export interface GameSubmission {
players: {id: string, nick: string}[],
results: GameResults[];
}
interface GameResults {
playerId: string;
blocks: any;
}
export const listGames: RequestHandler = async (req, res) => {
const user = (req.user as IDbUserDoc);
const dbUser = await DbUser.findById(user._id, {"savedGames.game": 1, "savedGames.createdAt": 1});
const user = (req.user as IDbUser);
const dbUser = await DbUser.findById(user.id, {"savedGames._id": 1, "savedGames.results": 1, "savedGames.createdAt": 1});
if (dbUser) {
console.log(dbUser.savedGames);
res.json({games: dbUser.savedGames});
}
else {
@@ -16,6 +26,19 @@ export const listGames: RequestHandler = async (req, res) => {
};
export const saveGame: RequestHandler = async (req, res) => {
const user = (req.user as IDbUserDoc);
await user.addGame(req.body);
const user = (req.user as IDbUser);
const submission = (req.body as GameSubmission);
for (let player of submission.players) {
if (player.id === player.nick) {
const newGuest = await user.addGuest(player.nick);
player.id = newGuest.id;
const playerResult = submission.results.find(result => result.playerId === player.nick);
playerResult!.playerId = player.id;
}
}
const newGame = await user.addGame(submission);
res.send({message: "Game submitted successfully!", newGame: newGame});
};
const processStatistics = (results: GameResults, account: IDbUser) => {
};