import { Firestore } from "firebase-admin/firestore"; import * as common from "@shinonomekazan/scrap-conan-online"; import * as types from "../types"; export interface FirestoreGamePlayState { gameState: string; } export namespace Game { export async function resolve(firestore: Firestore, gameCode: string) { const docRef = firestore.collection("/games").doc(gameCode); const firestoreData = await docRef.get(); if (!firestoreData.exists) { return undefined; } return firestoreData.data() as common.Game; } } export namespace Play { export async function resolve(firestore: Firestore, playId: string) { const docRef = firestore.collection("/plays").doc(playId); const firestoreData = await docRef.get(); if (firestoreData.exists !== true) { return undefined; } return firestoreData.data() as common.GamePlay; } export async function resolveState(firestore: Firestore, playId: string) { const docRef = firestore.collection(`/plays/${playId}/properties`).doc("state"); const firestoreData = await docRef.get(); if (firestoreData.exists !== true) { return undefined; } return firestoreData.data() as FirestoreGamePlayState; } export function resolveRawState(firestore: Firestore, playId: string) { const docRef = firestore.collection(`/plays/${playId}/properties`).doc("state"); return docRef.get(); } } export namespace PlayId { export async function resolveByRoomId(firestore: Firestore, roomId: string) { const query = firestore.collection("/playIds").where("roomId", "==", roomId); const firestoreData = await query.get(); if (firestoreData.empty) { return undefined; } return firestoreData.docs[0].data() as types.PlayIdDocument; } export async function resolve(firestore: Firestore, playId: string) { const docRef = firestore.collection("/playIds").doc(playId); const firestoreData = await docRef.get(); if (firestoreData.exists !== true) { return undefined; } return firestoreData.data() as types.PlayIdDocument; } } export namespace UserTokens { export async function resolve(firestore: Firestore, ticketCode: string) { const docRef = firestore.collection("/userTokens").doc(ticketCode); const firestoreData = await docRef.get(); if (firestoreData.exists !== true) { return undefined; } return firestoreData.data() as types.StoreUserToken; } }