feat(ttt/database): prefixed TTT database thingy to avoid pong conflicts
This commit is contained in:
parent
d222dfd332
commit
d59e8f93c8
3 changed files with 12 additions and 25 deletions
|
|
@ -27,8 +27,7 @@ CREATE TABLE IF NOT EXISTS tictactoe (
|
||||||
id TEXT PRIMARY KEY NOT NULL,
|
id TEXT PRIMARY KEY NOT NULL,
|
||||||
player1 TEXT NOT NULL,
|
player1 TEXT NOT NULL,
|
||||||
player2 TEXT NOT NULL,
|
player2 TEXT NOT NULL,
|
||||||
outcome TEXT NOT NULL
|
outcome TEXT NOT NULL,
|
||||||
|
FOREIGN KEY(player1) REFERENCES user(id),
|
||||||
-- FOREIGN KEY(player1) REFERENCES user(id)
|
FOREIGN KEY(player2) REFERENCES user(id)
|
||||||
-- FOREIGN KEY(player2) REFERENCES user(id)
|
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
|
import UUID from '@shared/utils/uuid';
|
||||||
import type { Database } from './_base';
|
import type { Database } from './_base';
|
||||||
import { UserId } from './user';
|
import { UserId } from './user';
|
||||||
// import { UserId } from './user';
|
|
||||||
|
|
||||||
// describe every function in the object
|
// describe every function in the object
|
||||||
export interface ITicTacToeDb extends Database {
|
export interface ITicTacToeDb extends Database {
|
||||||
setGameOutcome(this: ITicTacToeDb, id: GameId, player1: UserId, player2: UserId, outcome: string): void,
|
setTTTGameOutcome(this: ITicTacToeDb, id: TTTGameId, player1: UserId, player2: UserId, outcome: string): void,
|
||||||
// asyncFunction(id: TemplateId): Promise<TemplateData | undefined>,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TicTacToeImpl: Omit<ITicTacToeDb, keyof Database> = {
|
export const TicTacToeImpl: Omit<ITicTacToeDb, keyof Database> = {
|
||||||
|
|
@ -15,29 +14,18 @@ export const TicTacToeImpl: Omit<ITicTacToeDb, keyof Database> = {
|
||||||
* @param gameId The game we want to write the outcome of.
|
* @param gameId The game we want to write the outcome of.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
setGameOutcome(this: ITicTacToeDb, id: GameId, player1: string, player2: string, outcome: string): void {
|
setTTTGameOutcome(this: ITicTacToeDb, id: TTTGameId, player1: UserId, player2: UserId, outcome: string): void {
|
||||||
// Find a way to retrieve the outcome of the game.
|
// Find a way to retrieve the outcome of the game.
|
||||||
this.prepare('INSERT INTO tictactoe (id, player1, player2, outcome) VALUES (@id, @player1, @player2, @outcome)').run({ id, player1, player2, outcome });
|
this.prepare('INSERT INTO tictactoe (id, player1, player2, outcome) VALUES (@id, @player1, @player2, @outcome)').run({ id, player1, player2, outcome });
|
||||||
},
|
},
|
||||||
/**
|
|
||||||
* whole function description
|
|
||||||
*
|
|
||||||
* @param id the argument description
|
|
||||||
*
|
|
||||||
* @returns what does the function return ?
|
|
||||||
*/
|
|
||||||
// async asyncFunction(this: ITemplateDb, id: TemplateId): Promise<TemplateData | undefined> {
|
|
||||||
// void id;
|
|
||||||
// return undefined;
|
|
||||||
// },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type GameId = string & { readonly __brand: unique symbol };
|
export type TTTGameId = UUID & { readonly __brand: unique symbol };
|
||||||
|
|
||||||
export type TicTacToeData = {
|
export type TicTacToeGame = {
|
||||||
readonly id: GameId;
|
readonly id: TTTGameId;
|
||||||
readonly player1: string;
|
readonly player1: UserId;
|
||||||
readonly player2: string;
|
readonly player2: UserId;
|
||||||
readonly outcome: string;
|
readonly outcome: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ export class StateI {
|
||||||
this.gameUpdate(gameId, u2.socket);
|
this.gameUpdate(gameId, u2.socket);
|
||||||
if (g.checkState() !== 'ongoing') {
|
if (g.checkState() !== 'ongoing') {
|
||||||
this.cleanupGame(gameId, g);
|
this.cleanupGame(gameId, g);
|
||||||
this.fastify.db.setGameOutcome(gameId, u1.userId, u2.userId, g.checkState());
|
this.fastify.db.setTTTGameOutcome(gameId, u1.userId, u2.userId, g.checkState());
|
||||||
}
|
}
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue