diff --git a/src/common/contract.ts b/src/common/contract.ts index a3d02b4..462e527 100644 --- a/src/common/contract.ts +++ b/src/common/contract.ts @@ -48,7 +48,7 @@ const PostLogRequestParamsSchema = z.object({ description: "Version of the game that generated this log", example: "1.7.0", }), - saveGuid: z.string().uuid().optional().openapi({ + saveGuid: z.string().uuid().openapi({ title: "Save GUID", description: "A unique identifier for a whole game, which can be part of a multi-session game", @@ -185,7 +185,7 @@ export const contract = c.router( { postLog: { method: "POST", - path: "/logs/:gameName/:version/:saveGuid?/:sessionGuid", + path: "/logs/:gameName/:version/:saveGuid/:sessionGuid", body: PostLogRequestBodySchema, pathParams: PostLogRequestParamsSchema, responses: { diff --git a/src/server/db/add-entry.ts b/src/server/db/add-entry.ts deleted file mode 100644 index 7b3b553..0000000 --- a/src/server/db/add-entry.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { db } from "./init"; - -export async function addEntry( - saveGuid: string, - sessionGuid: string, - gameName: string, - version: string, - message: string, - metadata: [string, string][] -) { - await db.transaction().execute(async (trx) => { - // upsert the session info - await trx - .insertInto("session_info") - .ignore() - .values({ - id: sessionGuid, - game_name: gameName, - save_id: saveGuid, - version, - }) - .execute(); - // add the main log line - const insertResult = await trx - .insertInto("log_entries") - .values({ - session_info_id: sessionGuid, - message: message, - timestamp: new Date(), - }) - .executeTakeFirstOrThrow(); - // add all the metadata - if (metadata.length > 0) { - await trx - .insertInto("log_metadata") - .values( - metadata.map(([key, value]) => ({ - log_entry_id: Number(insertResult.insertId), - key, - value, - })) - ) - .execute(); - } - }); -} diff --git a/src/server/db/index.ts b/src/server/db/index.ts index c953a1d..4b88057 100644 --- a/src/server/db/index.ts +++ b/src/server/db/index.ts @@ -1 +1,3 @@ -export { addEntry } from "./add-entry"; +export { postLog } from "./post-log"; +export { getSession } from "./get-session"; +export { getSessions } from "./get-sessions"; diff --git a/src/server/db/post-log.ts b/src/server/db/post-log.ts index c587f30..4306ac0 100644 --- a/src/server/db/post-log.ts +++ b/src/server/db/post-log.ts @@ -5,7 +5,7 @@ import { db } from "./init"; export async function postLog( gameName: string, version: string, - saveGuid: string | undefined, + saveGuid: string, sessionGuid: string, message: string, metadata: SingleMetadata[] @@ -27,7 +27,7 @@ export async function postLog( .values({ id: sessionGuid, game_name: gameName, - save_id: saveGuid || "", + save_id: saveGuid, version, }) .execute(); diff --git a/src/server/router.ts b/src/server/router.ts index d71ec46..06a586a 100644 --- a/src/server/router.ts +++ b/src/server/router.ts @@ -1,11 +1,9 @@ import { createExpressEndpoints, initServer } from "@ts-rest/express"; import type { Express } from "express"; import { contract } from "../common/contract"; -import { getSessions } from "./db/get-sessions"; -import { getSession } from "./db/get-session"; -import { postLog } from "./db/post-log"; import { HttpError } from "./http-error"; import { OpenAPIObject } from "openapi3-ts/oas31"; +import { getSession, getSessions, postLog } from "./db"; export function installRouter(app: Express, openAPIObject: OpenAPIObject) { const s = initServer();