Skip to content
Snippets Groups Projects
Commit 4f442c35 authored by Paolo.Brasolin's avatar Paolo.Brasolin
Browse files

feat: #be add gmtm tracking

parent aea9bad7
No related branches found
No related tags found
No related merge requests found
import { Knex } from "knex";
export async function up(knex: Knex): Promise<void> {
return knex.schema
.alterTable("games", (table) => table.integer("began_at_gmtm").unsigned())
.alterTable("clues", (table) => table.integer("began_at_gmtm").unsigned())
.alterTable("shots", (table) => table.integer("began_at_gmtm").unsigned())
.alterTable("games", (table) => table.integer("ended_at_gmtm").unsigned())
.alterTable("clues", (table) => table.integer("ended_at_gmtm").unsigned())
.alterTable("shots", (table) => table.integer("ended_at_gmtm").unsigned());
}
export async function down(knex: Knex): Promise<void> {
return knex.schema
.alterTable("games", (table) => table.dropColumn("began_at_gmtm"))
.alterTable("clues", (table) => table.dropColumn("began_at_gmtm"))
.alterTable("shots", (table) => table.dropColumn("began_at_gmtm"))
.alterTable("games", (table) => table.dropColumn("ended_at_gmtm"))
.alterTable("clues", (table) => table.dropColumn("ended_at_gmtm"))
.alterTable("shots", (table) => table.dropColumn("ended_at_gmtm"));
}
...@@ -20,6 +20,8 @@ export const Game = Type.Object({ ...@@ -20,6 +20,8 @@ export const Game = Type.Object({
device_id: Type.Readonly(Type.String({ format: "uuid" })), device_id: Type.Readonly(Type.String({ format: "uuid" })),
began_at: Nullable(Type.String({ format: "date-time" })), began_at: Nullable(Type.String({ format: "date-time" })),
ended_at: Nullable(Type.String({ format: "date-time" })), ended_at: Nullable(Type.String({ format: "date-time" })),
began_at_gmtm: Nullable(Type.Number({ minimum: 0 })),
ended_at_gmtm: Nullable(Type.Number({ minimum: 0 })),
}); });
export const Clue = Type.Object({ export const Clue = Type.Object({
...@@ -28,6 +30,8 @@ export const Clue = Type.Object({ ...@@ -28,6 +30,8 @@ export const Clue = Type.Object({
word_id: Type.Readonly(Type.String({ format: "uuid" })), word_id: Type.Readonly(Type.String({ format: "uuid" })),
began_at: Nullable(Type.String({ format: "date-time" })), began_at: Nullable(Type.String({ format: "date-time" })),
ended_at: Nullable(Type.String({ format: "date-time" })), ended_at: Nullable(Type.String({ format: "date-time" })),
began_at_gmtm: Nullable(Type.Number({ minimum: 0 })),
ended_at_gmtm: Nullable(Type.Number({ minimum: 0 })),
}); });
export const Shot = Type.Object({ export const Shot = Type.Object({
...@@ -36,17 +40,19 @@ export const Shot = Type.Object({ ...@@ -36,17 +40,19 @@ export const Shot = Type.Object({
clue_id: Nullable(Type.String({ format: "uuid" })), clue_id: Nullable(Type.String({ format: "uuid" })),
began_at: Type.String({ format: "date-time" }), began_at: Type.String({ format: "date-time" }),
ended_at: Type.String({ format: "date-time" }), ended_at: Type.String({ format: "date-time" }),
began_at_gmtm: Nullable(Type.Number({ minimum: 0 })),
ended_at_gmtm: Nullable(Type.Number({ minimum: 0 })),
typed: Type.String(), typed: Type.String(),
final: Type.String(), final: Type.String(),
}); });
export const GameUpdate = Type.Partial( export const GameUpdate = Type.Partial(
Type.Pick(Game, ["began_at", "ended_at"]), Type.Pick(Game, ["began_at", "ended_at", "began_at_gmtm", "ended_at_gmtm"]),
); );
export const GameCreate = GameUpdate; export const GameCreate = GameUpdate;
export const ClueUpdate = Type.Partial( export const ClueUpdate = Type.Partial(
Type.Pick(Clue, ["began_at", "ended_at"]), Type.Pick(Clue, ["began_at", "ended_at", "began_at_gmtm", "ended_at_gmtm"]),
); );
export const ClueCreate = Type.Intersect([ export const ClueCreate = Type.Intersect([
Type.Pick(Clue, ["word_id"]), Type.Pick(Clue, ["word_id"]),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment