- Implement user registration and login with NextAuth v5 (email/password, JWT) - Add authentication modal in UI with login/register tabs - Create user profile screen showing game statistics and history - Integrate Prisma 7 ORM with SQLite database for data persistence - Store game results (mode, path, clicks, time) in database - Auto-save completed games only when user is authenticated - Separate business logic into reusable hooks (useSoloGame, useMultiGame) - Organize UI into composable screen components (HomeScreen, SoloScreen, ProfileScreen, etc) - Add session persistence across F5 refresh for solo and multiplayer - Style auth modal, account button, and profile stats dashboard
215 lines
16 KiB
TypeScript
215 lines
16 KiB
TypeScript
|
|
/* !!! This is code generated by Prisma. Do not edit directly. !!! */
|
|
/* eslint-disable */
|
|
// biome-ignore-all lint: generated file
|
|
// @ts-nocheck
|
|
/*
|
|
* WARNING: This is an internal file that is subject to change!
|
|
*
|
|
* 🛑 Under no circumstances should you import this file directly! 🛑
|
|
*
|
|
* Please import the `PrismaClient` class from the `client.ts` file instead.
|
|
*/
|
|
|
|
import * as runtime from "@prisma/client/runtime/client"
|
|
import type * as Prisma from "./prismaNamespace"
|
|
|
|
|
|
const config: runtime.GetPrismaClientConfig = {
|
|
"previewFeatures": [],
|
|
"clientVersion": "7.7.0",
|
|
"engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711",
|
|
"activeProvider": "sqlite",
|
|
"inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n password String\n createdAt DateTime @default(now())\n games Game[]\n}\n\nmodel Game {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n mode String // \"solo\" | \"multi\"\n startArticle String\n targetArticle String\n path String // JSON array de titres\n clicks Int\n timeSeconds Float\n won Boolean @default(true)\n playedAt DateTime @default(now())\n\n @@index([userId])\n}\n",
|
|
"runtimeDataModel": {
|
|
"models": {},
|
|
"enums": {},
|
|
"types": {}
|
|
},
|
|
"parameterizationSchema": {
|
|
"strings": [],
|
|
"graph": ""
|
|
}
|
|
}
|
|
|
|
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"games\",\"kind\":\"object\",\"type\":\"Game\",\"relationName\":\"GameToUser\"}],\"dbName\":null},\"Game\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"GameToUser\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startArticle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetArticle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"path\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"clicks\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"timeSeconds\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"won\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"playedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
|
config.parameterizationSchema = {
|
|
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"games\",\"_count\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Game.findUnique\",\"Game.findUniqueOrThrow\",\"Game.findFirst\",\"Game.findFirstOrThrow\",\"Game.findMany\",\"Game.createOne\",\"Game.createMany\",\"Game.createManyAndReturn\",\"Game.updateOne\",\"Game.updateMany\",\"Game.updateManyAndReturn\",\"Game.upsertOne\",\"Game.deleteOne\",\"Game.deleteMany\",\"_avg\",\"_sum\",\"Game.groupBy\",\"Game.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"userId\",\"mode\",\"startArticle\",\"targetArticle\",\"path\",\"clicks\",\"timeSeconds\",\"won\",\"playedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"name\",\"email\",\"password\",\"createdAt\",\"every\",\"some\",\"none\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
graph: "cxQgCQQAAEkAIC4AAEYAMC8AAAkAEDAAAEYAMDEBAAAAAUYBAEcAIUcBAAAAAUgBAEcAIUlAAEgAIQEAAAABACAOAwAATgAgLgAASgAwLwAAAwAQMAAASgAwMQEARwAhMgEARwAhMwEARwAhNAEARwAhNQEARwAhNgEARwAhNwIASwAhOAgATAAhOSAATQAhOkAASAAhAQMAAG0AIA4DAABOACAuAABKADAvAAADABAwAABKADAxAQAAAAEyAQBHACEzAQBHACE0AQBHACE1AQBHACE2AQBHACE3AgBLACE4CABMACE5IABNACE6QABIACEDAAAAAwAgAQAABAAwAgAABQAgAQAAAAMAIAEAAAABACAJBAAASQAgLgAARgAwLwAACQAQMAAARgAwMQEARwAhRgEARwAhRwEARwAhSAEARwAhSUAASAAhAQQAAGwAIAMAAAAJACABAAAKADACAAABACADAAAACQAgAQAACgAwAgAAAQAgAwAAAAkAIAEAAAoAMAIAAAEAIAYEAABrACAxAQAAAAFGAQAAAAFHAQAAAAFIAQAAAAFJQAAAAAEBCwAADgAgBTEBAAAAAUYBAAAAAUcBAAAAAUgBAAAAAUlAAAAAAQELAAAQADABCwAAEAAwBgQAAF4AIDEBAFQAIUYBAFQAIUcBAFQAIUgBAFQAIUlAAFgAIQIAAAABACALAAATACAFMQEAVAAhRgEAVAAhRwEAVAAhSAEAVAAhSUAAWAAhAgAAAAkAIAsAABUAIAIAAAAJACALAAAVACADAAAAAQAgEgAADgAgEwAAEwAgAQAAAAEAIAEAAAAJACADBQAAWwAgGAAAXQAgGQAAXAAgCC4AAEUAMC8AABwAEDAAAEUAMDEBADYAIUYBADYAIUcBADYAIUgBADYAIUlAADoAIQMAAAAJACABAAAbADAXAAAcACADAAAACQAgAQAACgAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACALAwAAWgAgMQEAAAABMgEAAAABMwEAAAABNAEAAAABNQEAAAABNgEAAAABNwIAAAABOAgAAAABOSAAAAABOkAAAAABAQsAACQAIAoxAQAAAAEyAQAAAAEzAQAAAAE0AQAAAAE1AQAAAAE2AQAAAAE3AgAAAAE4CAAAAAE5IAAAAAE6QAAAAAEBCwAAJgAwAQsAACYAMAsDAABZACAxAQBUACEyAQBUACEzAQBUACE0AQBUACE1AQBUACE2AQBUACE3AgBVACE4CABWACE5IABXACE6QABYACECAAAABQAgCwAAKQAgCjEBAFQAITIBAFQAITMBAFQAITQBAFQAITUBAFQAITYBAFQAITcCAFUAITgIAFYAITkgAFcAITpAAFgAIQIAAAADACALAAArACACAAAAAwAgCwAAKwAgAwAAAAUAIBIAACQAIBMAACkAIAEAAAAFACABAAAAAwAgBQUAAE8AIBgAAFIAIBkAAFEAICoAAFAAICsAAFMAIA0uAAA1ADAvAAAyABAwAAA1ADAxAQA2ACEyAQA2ACEzAQA2ACE0AQA2ACE1AQA2ACE2AQA2ACE3AgA3ACE4CAA4ACE5IAA5ACE6QAA6ACEDAAAAAwAgAQAAMQAwFwAAMgAgAwAAAAMAIAEAAAQAMAIAAAUAIA0uAAA1ADAvAAAyABAwAAA1ADAxAQA2ACEyAQA2ACEzAQA2ACE0AQA2ACE1AQA2ACE2AQA2ACE3AgA3ACE4CAA4ACE5IAA5ACE6QAA6ACEOBQAAPAAgGAAARAAgGQAARAAgOwEAAAABPAEAAAAEPQEAAAAEPgEAAAABPwEAAAABQAEAAAABQQEAAAABQgEAQwAhQwEAAAABRAEAAAABRQEAAAABDQUAADwAIBgAADwAIBkAADwAICoAAEEAICsAADwAIDsCAAAAATwCAAAABD0CAAAABD4CAAAAAT8CAAAAAUACAAAAAUECAAAAAUICAEIAIQ0FAAA8ACAYAABBACAZAABBACAqAABBACArAABBACA7CAAAAAE8CAAAAAQ9CAAAAAQ-CAAAAAE_CAAAAAFACAAAAAFBCAAAAAFCCABAACEFBQAAPAAgGAAAPwAgGQAAPwAgOyAAAAABQiAAPgAhCwUAADwAIBgAAD0AIBkAAD0AIDtAAAAAATxAAAAABD1AAAAABD5AAAAAAT9AAAAAAUBAAAAAAUFAAAAAAUJAADsAIQsFAAA8ACAYAAA9ACAZAAA9ACA7QAAAAAE8QAAAAAQ9QAAAAAQ-QAAAAAE_QAAAAAFAQAAAAAFBQAAAAAFCQAA7ACEIOwIAAAABPAIAAAAEPQIAAAAEPgIAAAABPwIAAAABQAIAAAABQQIAAAABQgIAPAAhCDtAAAAAATxAAAAABD1AAAAABD5AAAAAAT9AAAAAAUBAAAAAAUFAAAAAAUJAAD0AIQUFAAA8ACAYAAA_ACAZAAA_ACA7IAAAAAFCIAA-ACECOyAAAAABQiAAPwAhDQUAADwAIBgAAEEAIBkAAEEAICoAAEEAICsAAEEAIDsIAAAAATwIAAAABD0IAAAABD4IAAAAAT8IAAAAAUAIAAAAAUEIAAAAAUIIAEAAIQg7CAAAAAE8CAAAAAQ9CAAAAAQ-CAAAAAE_CAAAAAFACAAAAAFBCAAAAAFCCABBACENBQAAPAAgGAAAPAAgGQAAPAAgKgAAQQAgKwAAPAAgOwIAAAABPAIAAAAEPQIAAAAEPgIAAAABPwIAAAABQAIAAAABQQIAAAABQgIAQgAhDgUAADwAIBgAAEQAIBkAAEQAIDsBAAAAATwBAAAABD0BAAAABD4BAAAAAT8BAAAAAUABAAAAAUEBAAAAAUIBAEMAIUMBAAAAAUQBAAAAAUUBAAAAAQs7AQAAAAE8AQAAAAQ9AQAAAAQ-AQAAAAE_AQAAAAFAAQAAAAFBAQAAAAFCAQBEACFDAQAAAAFEAQAAAAFFAQAAAAEILgAARQAwLwAAHAAQMAAARQAwMQEANgAhRgEANgAhRwEANgAhSAEANgAhSUAAOgAhCQQAAEkAIC4AAEYAMC8AAAkAEDAAAEYAMDEBAEcAIUYBAEcAIUcBAEcAIUgBAEcAIUlAAEgAIQs7AQAAAAE8AQAAAAQ9AQAAAAQ-AQAAAAE_AQAAAAFAAQAAAAFBAQAAAAFCAQBEACFDAQAAAAFEAQAAAAFFAQAAAAEIO0AAAAABPEAAAAAEPUAAAAAEPkAAAAABP0AAAAABQEAAAAABQUAAAAABQkAAPQAhA0oAAAMAIEsAAAMAIEwAAAMAIA4DAABOACAuAABKADAvAAADABAwAABKADAxAQBHACEyAQBHACEzAQBHACE0AQBHACE1AQBHACE2AQBHACE3AgBLACE4CABMACE5IABNACE6QABIACEIOwIAAAABPAIAAAAEPQIAAAAEPgIAAAABPwIAAAABQAIAAAABQQIAAAABQgIAPAAhCDsIAAAAATwIAAAABD0IAAAABD4IAAAAAT8IAAAAAUAIAAAAAUEIAAAAAUIIAEEAIQI7IAAAAAFCIAA_ACELBAAASQAgLgAARgAwLwAACQAQMAAARgAwMQEARwAhRgEARwAhRwEARwAhSAEARwAhSUAASAAhTQAACQAgTgAACQAgAAAAAAABUgEAAAABBVICAAAAAVgCAAAAAVkCAAAAAVoCAAAAAVsCAAAAAQVSCAAAAAFYCAAAAAFZCAAAAAFaCAAAAAFbCAAAAAEBUiAAAAABAVJAAAAAAQUSAABvACATAAByACBPAABwACBQAABxACBVAAABACADEgAAbwAgTwAAcAAgVQAAAQAgAAAACxIAAF8AMBMAAGQAME8AAGAAMFAAAGEAMFEAAGIAIFIAAGMAMFMAAGMAMFQAAGMAMFUAAGMAMFYAAGUAMFcAAGYAMAkxAQAAAAEzAQAAAAE0AQAAAAE1AQAAAAE2AQAAAAE3AgAAAAE4CAAAAAE5IAAAAAE6QAAAAAECAAAABQAgEgAAagAgAwAAAAUAIBIAAGoAIBMAAGkAIAELAABuADAOAwAATgAgLgAASgAwLwAAAwAQMAAASgAwMQEAAAABMgEARwAhMwEARwAhNAEARwAhNQEARwAhNgEARwAhNwIASwAhOAgATAAhOSAATQAhOkAASAAhAgAAAAUAIAsAAGkAIAIAAABnACALAABoACANLgAAZgAwLwAAZwAQMAAAZgAwMQEARwAhMgEARwAhMwEARwAhNAEARwAhNQEARwAhNgEARwAhNwIASwAhOAgATAAhOSAATQAhOkAASAAhDS4AAGYAMC8AAGcAEDAAAGYAMDEBAEcAITIBAEcAITMBAEcAITQBAEcAITUBAEcAITYBAEcAITcCAEsAITgIAEwAITkgAE0AITpAAEgAIQkxAQBUACEzAQBUACE0AQBUACE1AQBUACE2AQBUACE3AgBVACE4CABWACE5IABXACE6QABYACEJMQEAVAAhMwEAVAAhNAEAVAAhNQEAVAAhNgEAVAAhNwIAVQAhOAgAVgAhOSAAVwAhOkAAWAAhCTEBAAAAATMBAAAAATQBAAAAATUBAAAAATYBAAAAATcCAAAAATgIAAAAATkgAAAAATpAAAAAAQQSAABfADBPAABgADBRAABiACBVAABjADAAAQQAAGwAIAkxAQAAAAEzAQAAAAE0AQAAAAE1AQAAAAE2AQAAAAE3AgAAAAE4CAAAAAE5IAAAAAE6QAAAAAEFMQEAAAABRgEAAAABRwEAAAABSAEAAAABSUAAAAABAgAAAAEAIBIAAG8AIAMAAAAJACASAABvACATAABzACAHAAAACQAgCwAAcwAgMQEAVAAhRgEAVAAhRwEAVAAhSAEAVAAhSUAAWAAhBTEBAFQAIUYBAFQAIUcBAFQAIUgBAFQAIUlAAFgAIQIEBgIFAAMBAwABAQQHAAAAAAMFAAgYAAkZAAoAAAADBQAIGAAJGQAKAQMAAQEDAAEFBQAPGAASGQATKgAQKwARAAAAAAAFBQAPGAASGQATKgAQKwARBgIBBwgBCAsBCQwBCg0BDA8BDREEDhIFDxQBEBYEERcGFBgBFRkBFhoEGh0HGx4LHB8CHSACHiECHyICICMCISUCIicEIygMJCoCJSwEJi0NJy4CKC8CKTAELDMOLTQU"
|
|
}
|
|
|
|
async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
|
|
const { Buffer } = await import('node:buffer')
|
|
const wasmArray = Buffer.from(wasmBase64, 'base64')
|
|
return new WebAssembly.Module(wasmArray)
|
|
}
|
|
|
|
config.compilerWasm = {
|
|
getRuntime: async () => await import("@prisma/client/runtime/query_compiler_fast_bg.sqlite.mjs"),
|
|
|
|
getQueryCompilerWasmModule: async () => {
|
|
const { wasm } = await import("@prisma/client/runtime/query_compiler_fast_bg.sqlite.wasm-base64.mjs")
|
|
return await decodeBase64AsWasm(wasm)
|
|
},
|
|
|
|
importName: "./query_compiler_fast_bg.js"
|
|
}
|
|
|
|
|
|
|
|
export type LogOptions<ClientOptions extends Prisma.PrismaClientOptions> =
|
|
'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never
|
|
|
|
export interface PrismaClientConstructor {
|
|
/**
|
|
* ## Prisma Client
|
|
*
|
|
* Type-safe database client for TypeScript
|
|
* @example
|
|
* ```
|
|
* const prisma = new PrismaClient({
|
|
* adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })
|
|
* })
|
|
* // Fetch zero or more Users
|
|
* const users = await prisma.user.findMany()
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://pris.ly/d/client).
|
|
*/
|
|
|
|
new <
|
|
Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,
|
|
LogOpts extends LogOptions<Options> = LogOptions<Options>,
|
|
OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'],
|
|
ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs
|
|
>(options: Prisma.Subset<Options, Prisma.PrismaClientOptions> ): PrismaClient<LogOpts, OmitOpts, ExtArgs>
|
|
}
|
|
|
|
/**
|
|
* ## Prisma Client
|
|
*
|
|
* Type-safe database client for TypeScript
|
|
* @example
|
|
* ```
|
|
* const prisma = new PrismaClient({
|
|
* adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })
|
|
* })
|
|
* // Fetch zero or more Users
|
|
* const users = await prisma.user.findMany()
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://pris.ly/d/client).
|
|
*/
|
|
|
|
export interface PrismaClient<
|
|
in LogOpts extends Prisma.LogLevel = never,
|
|
in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined,
|
|
in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs
|
|
> {
|
|
[K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }
|
|
|
|
$on<V extends LogOpts>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient;
|
|
|
|
/**
|
|
* Connect with the database
|
|
*/
|
|
$connect(): runtime.Types.Utils.JsPromise<void>;
|
|
|
|
/**
|
|
* Disconnect from the database
|
|
*/
|
|
$disconnect(): runtime.Types.Utils.JsPromise<void>;
|
|
|
|
/**
|
|
* Executes a prepared raw query and returns the number of affected rows.
|
|
* @example
|
|
* ```
|
|
* const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://pris.ly/d/raw-queries).
|
|
*/
|
|
$executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;
|
|
|
|
/**
|
|
* Executes a raw query and returns the number of affected rows.
|
|
* Susceptible to SQL injections, see documentation.
|
|
* @example
|
|
* ```
|
|
* const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://pris.ly/d/raw-queries).
|
|
*/
|
|
$executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;
|
|
|
|
/**
|
|
* Performs a prepared raw query and returns the `SELECT` data.
|
|
* @example
|
|
* ```
|
|
* const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://pris.ly/d/raw-queries).
|
|
*/
|
|
$queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;
|
|
|
|
/**
|
|
* Performs a raw query and returns the `SELECT` data.
|
|
* Susceptible to SQL injections, see documentation.
|
|
* @example
|
|
* ```
|
|
* const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://pris.ly/d/raw-queries).
|
|
*/
|
|
$queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;
|
|
|
|
|
|
/**
|
|
* Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
|
|
* @example
|
|
* ```
|
|
* const [george, bob, alice] = await prisma.$transaction([
|
|
* prisma.user.create({ data: { name: 'George' } }),
|
|
* prisma.user.create({ data: { name: 'Bob' } }),
|
|
* prisma.user.create({ data: { name: 'Alice' } }),
|
|
* ])
|
|
* ```
|
|
*
|
|
* Read more in our [docs](https://www.prisma.io/docs/orm/prisma-client/queries/transactions).
|
|
*/
|
|
$transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>
|
|
|
|
$transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => runtime.Types.Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<R>
|
|
|
|
$extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb<OmitOpts>, ExtArgs, runtime.Types.Utils.Call<Prisma.TypeMapCb<OmitOpts>, {
|
|
extArgs: ExtArgs
|
|
}>>
|
|
|
|
/**
|
|
* `prisma.user`: Exposes CRUD operations for the **User** model.
|
|
* Example usage:
|
|
* ```ts
|
|
* // Fetch zero or more Users
|
|
* const users = await prisma.user.findMany()
|
|
* ```
|
|
*/
|
|
get user(): Prisma.UserDelegate<ExtArgs, { omit: OmitOpts }>;
|
|
|
|
/**
|
|
* `prisma.game`: Exposes CRUD operations for the **Game** model.
|
|
* Example usage:
|
|
* ```ts
|
|
* // Fetch zero or more Games
|
|
* const games = await prisma.game.findMany()
|
|
* ```
|
|
*/
|
|
get game(): Prisma.GameDelegate<ExtArgs, { omit: OmitOpts }>;
|
|
}
|
|
|
|
export function getPrismaClientClass(): PrismaClientConstructor {
|
|
return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor
|
|
}
|