From 3a072a7165389fefeed093d6f48231b59f157c69 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Thu, 14 May 2026 08:44:20 +0700 Subject: [PATCH] Add voice transcription admin review flow --- .gitea/workflows/build-and-deploy.yml | 13 +- .../migration.sql | 10 + prisma/schema.prisma | 66 +++--- src/auth/telegram.ts | 9 + src/generated/prisma/edge.js | 12 +- src/generated/prisma/index-browser.js | 4 + src/generated/prisma/index.d.ts | 210 +++++++++++++++++- src/generated/prisma/index.js | 12 +- src/generated/prisma/package.json | 2 +- src/generated/prisma/schema.prisma | 28 ++- src/graphql/schema.ts | 6 +- src/graphql/voice-experiences.ts | 17 ++ src/server.ts | 35 ++- 13 files changed, 355 insertions(+), 69 deletions(-) create mode 100644 prisma/migrations/6_add_voice_audio_and_admin_flag/migration.sql diff --git a/.gitea/workflows/build-and-deploy.yml b/.gitea/workflows/build-and-deploy.yml index b79e987..d409025 100644 --- a/.gitea/workflows/build-and-deploy.yml +++ b/.gitea/workflows/build-and-deploy.yml @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: build-host + runs-on: builder env: SERVICE_NAME: backend IMAGE_SHA: gitea.dsrptlab.com/mapflow/backend:${{ github.sha }} @@ -25,12 +25,6 @@ jobs: - name: Build and push image run: | set -euo pipefail - builder="builder" - if ! docker buildx inspect "$builder" >/dev/null 2>&1; then - docker buildx create --name "$builder" --driver docker-container --buildkitd-config /etc/buildkit/buildkitd.toml - fi - docker buildx use "$builder" - docker buildx inspect --bootstrap docker buildx build --push --provenance=false --tag "$IMAGE_SHA" --tag "$IMAGE_LATEST" . - name: Skip stale deployment @@ -58,8 +52,3 @@ jobs: -d "$payload")" cat "$response_file" [ "$status_code" = "200" ] - - - name: Prune shared BuildKit cache - run: | - set -euo pipefail - docker buildx prune --builder builder --all --max-used-space 40gb -f diff --git a/prisma/migrations/6_add_voice_audio_and_admin_flag/migration.sql b/prisma/migrations/6_add_voice_audio_and_admin_flag/migration.sql new file mode 100644 index 0000000..3b8f5cc --- /dev/null +++ b/prisma/migrations/6_add_voice_audio_and_admin_flag/migration.sql @@ -0,0 +1,10 @@ +-- AlterTable +ALTER TABLE "User" ADD COLUMN "isAdmin" BOOLEAN NOT NULL DEFAULT false; + +-- AlterTable +ALTER TABLE "VoiceExperience" ADD COLUMN "audioAccessToken" TEXT, +ADD COLUMN "audioContentBase64" TEXT, +ADD COLUMN "audioMimeType" TEXT; + +-- CreateIndex +CREATE UNIQUE INDEX "VoiceExperience_audioAccessToken_key" ON "VoiceExperience"("audioAccessToken"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7e2b253..610094f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -17,31 +17,32 @@ enum VoiceExperienceStatus { } model Place { - id String @id @default(cuid()) - googlePlaceId String @unique - name String - latitude Float - longitude Float + id String @id @default(cuid()) + googlePlaceId String @unique + name String + latitude Float + longitude Float googlePrimaryType String? googleTypes String[] @default([]) - experiences VoiceExperience[] - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + experiences VoiceExperience[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt } model User { - id String @id @default(cuid()) - telegramId String @unique - username String? - firstName String? - lastName String? - photoUrl String? - languageCode String? - sessions UserSession[] - loginRequests TelegramLoginRequest[] + id String @id @default(cuid()) + telegramId String @unique + username String? + firstName String? + lastName String? + photoUrl String? + languageCode String? + isAdmin Boolean @default(false) + sessions UserSession[] + loginRequests TelegramLoginRequest[] voiceExperiences VoiceExperience[] - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt } model UserSession { @@ -68,16 +69,19 @@ model TelegramLoginRequest { } model VoiceExperience { - id String @id @default(cuid()) - placeId String - place Place @relation(fields: [placeId], references: [id]) - userId String? - user User? @relation(fields: [userId], references: [id]) - durationSeconds Int - audioObjectKey String - status VoiceExperienceStatus @default(UPLOADED) - transcript String? - analysis Json? - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + id String @id @default(cuid()) + placeId String + place Place @relation(fields: [placeId], references: [id]) + userId String? + user User? @relation(fields: [userId], references: [id]) + durationSeconds Int + audioObjectKey String + audioContentBase64 String? + audioMimeType String? + audioAccessToken String? @unique + status VoiceExperienceStatus @default(UPLOADED) + transcript String? + analysis Json? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt } diff --git a/src/auth/telegram.ts b/src/auth/telegram.ts index 81d8307..cb0770b 100644 --- a/src/auth/telegram.ts +++ b/src/auth/telegram.ts @@ -196,3 +196,12 @@ export async function requireTelegramUser(authData: TelegramAuthData) { throw new Error('Telegram authorization is required.'); } + +export async function requireAdminTelegramUser(authData: TelegramAuthData) { + const user = await requireTelegramUser(authData); + if (!user.isAdmin) { + throw new Error('MapFlow admin access is required.'); + } + + return user; +} diff --git a/src/generated/prisma/edge.js b/src/generated/prisma/edge.js index 4cec8b4..f218a8b 100644 --- a/src/generated/prisma/edge.js +++ b/src/generated/prisma/edge.js @@ -112,6 +112,7 @@ exports.Prisma.UserScalarFieldEnum = { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -143,6 +144,9 @@ exports.Prisma.VoiceExperienceScalarFieldEnum = { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', @@ -199,14 +203,14 @@ const config = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nenum VoiceExperienceStatus {\n UPLOADED\n TRANSCRIBING\n TRANSCRIBED\n ANALYZING\n ANALYZED\n FAILED\n}\n\nmodel Place {\n id String @id @default(cuid())\n googlePlaceId String @unique\n name String\n latitude Float\n longitude Float\n googlePrimaryType String?\n googleTypes String[] @default([])\n experiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel User {\n id String @id @default(cuid())\n telegramId String @unique\n username String?\n firstName String?\n lastName String?\n photoUrl String?\n languageCode String?\n sessions UserSession[]\n loginRequests TelegramLoginRequest[]\n voiceExperiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel UserSession {\n id String @id @default(cuid())\n tokenHash String @unique\n userId String\n user User @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n}\n\nmodel TelegramLoginRequest {\n id String @id @default(cuid())\n tokenHash String @unique\n status String @default(\"PENDING\")\n sessionToken String?\n telegramChatId String?\n telegramMessageId Int?\n userId String?\n user User? @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel VoiceExperience {\n id String @id @default(cuid())\n placeId String\n place Place @relation(fields: [placeId], references: [id])\n userId String?\n user User? @relation(fields: [userId], references: [id])\n durationSeconds Int\n audioObjectKey String\n status VoiceExperienceStatus @default(UPLOADED)\n transcript String?\n analysis Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nenum VoiceExperienceStatus {\n UPLOADED\n TRANSCRIBING\n TRANSCRIBED\n ANALYZING\n ANALYZED\n FAILED\n}\n\nmodel Place {\n id String @id @default(cuid())\n googlePlaceId String @unique\n name String\n latitude Float\n longitude Float\n googlePrimaryType String?\n googleTypes String[] @default([])\n experiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel User {\n id String @id @default(cuid())\n telegramId String @unique\n username String?\n firstName String?\n lastName String?\n photoUrl String?\n languageCode String?\n isAdmin Boolean @default(false)\n sessions UserSession[]\n loginRequests TelegramLoginRequest[]\n voiceExperiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel UserSession {\n id String @id @default(cuid())\n tokenHash String @unique\n userId String\n user User @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n}\n\nmodel TelegramLoginRequest {\n id String @id @default(cuid())\n tokenHash String @unique\n status String @default(\"PENDING\")\n sessionToken String?\n telegramChatId String?\n telegramMessageId Int?\n userId String?\n user User? @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel VoiceExperience {\n id String @id @default(cuid())\n placeId String\n place Place @relation(fields: [placeId], references: [id])\n userId String?\n user User? @relation(fields: [userId], references: [id])\n durationSeconds Int\n audioObjectKey String\n audioContentBase64 String?\n audioMimeType String?\n audioAccessToken String? @unique\n status VoiceExperienceStatus @default(UPLOADED)\n transcript String?\n analysis Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Place\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googlePlaceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"googlePrimaryType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googleTypes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"experiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"photoUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"languageCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"UserSession\",\"relationName\":\"UserToUserSession\"},{\"name\":\"loginRequests\",\"kind\":\"object\",\"type\":\"TelegramLoginRequest\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"UserSession\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSession\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TelegramLoginRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramChatId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramMessageId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"VoiceExperience\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"place\",\"kind\":\"object\",\"type\":\"Place\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"durationSeconds\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"audioObjectKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VoiceExperienceStatus\"},{\"name\":\"transcript\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"analysis\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Place\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googlePlaceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"googlePrimaryType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googleTypes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"experiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"photoUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"languageCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAdmin\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"UserSession\",\"relationName\":\"UserToUserSession\"},{\"name\":\"loginRequests\",\"kind\":\"object\",\"type\":\"TelegramLoginRequest\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"UserSession\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSession\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TelegramLoginRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramChatId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramMessageId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"VoiceExperience\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"place\",\"kind\":\"object\",\"type\":\"Place\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"durationSeconds\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"audioObjectKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"audioContentBase64\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"audioMimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"audioAccessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VoiceExperienceStatus\"},{\"name\":\"transcript\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"analysis\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"place\",\"user\",\"sessions\",\"loginRequests\",\"voiceExperiences\",\"_count\",\"experiences\",\"Place.findUnique\",\"Place.findUniqueOrThrow\",\"Place.findFirst\",\"Place.findFirstOrThrow\",\"Place.findMany\",\"data\",\"Place.createOne\",\"Place.createMany\",\"Place.createManyAndReturn\",\"Place.updateOne\",\"Place.updateMany\",\"Place.updateManyAndReturn\",\"create\",\"update\",\"Place.upsertOne\",\"Place.deleteOne\",\"Place.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Place.groupBy\",\"Place.aggregate\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserSession.findUnique\",\"UserSession.findUniqueOrThrow\",\"UserSession.findFirst\",\"UserSession.findFirstOrThrow\",\"UserSession.findMany\",\"UserSession.createOne\",\"UserSession.createMany\",\"UserSession.createManyAndReturn\",\"UserSession.updateOne\",\"UserSession.updateMany\",\"UserSession.updateManyAndReturn\",\"UserSession.upsertOne\",\"UserSession.deleteOne\",\"UserSession.deleteMany\",\"UserSession.groupBy\",\"UserSession.aggregate\",\"TelegramLoginRequest.findUnique\",\"TelegramLoginRequest.findUniqueOrThrow\",\"TelegramLoginRequest.findFirst\",\"TelegramLoginRequest.findFirstOrThrow\",\"TelegramLoginRequest.findMany\",\"TelegramLoginRequest.createOne\",\"TelegramLoginRequest.createMany\",\"TelegramLoginRequest.createManyAndReturn\",\"TelegramLoginRequest.updateOne\",\"TelegramLoginRequest.updateMany\",\"TelegramLoginRequest.updateManyAndReturn\",\"TelegramLoginRequest.upsertOne\",\"TelegramLoginRequest.deleteOne\",\"TelegramLoginRequest.deleteMany\",\"TelegramLoginRequest.groupBy\",\"TelegramLoginRequest.aggregate\",\"VoiceExperience.findUnique\",\"VoiceExperience.findUniqueOrThrow\",\"VoiceExperience.findFirst\",\"VoiceExperience.findFirstOrThrow\",\"VoiceExperience.findMany\",\"VoiceExperience.createOne\",\"VoiceExperience.createMany\",\"VoiceExperience.createManyAndReturn\",\"VoiceExperience.updateOne\",\"VoiceExperience.updateMany\",\"VoiceExperience.updateManyAndReturn\",\"VoiceExperience.upsertOne\",\"VoiceExperience.deleteOne\",\"VoiceExperience.deleteMany\",\"VoiceExperience.groupBy\",\"VoiceExperience.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"placeId\",\"userId\",\"durationSeconds\",\"audioObjectKey\",\"VoiceExperienceStatus\",\"status\",\"transcript\",\"analysis\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"tokenHash\",\"sessionToken\",\"telegramChatId\",\"telegramMessageId\",\"expiresAt\",\"telegramId\",\"username\",\"firstName\",\"lastName\",\"photoUrl\",\"languageCode\",\"every\",\"some\",\"none\",\"googlePlaceId\",\"name\",\"latitude\",\"longitude\",\"googlePrimaryType\",\"googleTypes\",\"has\",\"hasEvery\",\"hasSome\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "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_ACABAAAABQAgAQAAAAMAIAgIAAC-AQAgHAAAvwEAIB0AAMIBACAeAADBAQAgHwAAwAEAIGcAAL0BACBsAAC9AQAgbQAAvQEAIA1iAACMAQAwYwAAiQEAEGQAAIwBADBlAQCNAQAhZgEAjQEAIWcBAI4BACFoAgCPAQAhaQEAjQEAIWsAAJABayJsAQCOAQAhbQAAkQEAIG5AAJIBACFvQACSAQAhAwAAAAMAIAEAAIgBADAbAACJAQAgAwAAAAMAIAEAAAQAMAIAAAUAIA1iAACMAQAwYwAAiQEAEGQAAIwBADBlAQCNAQAhZgEAjQEAIWcBAI4BACFoAgCPAQAhaQEAjQEAIWsAAJABayJsAQCOAQAhbQAAkQEAIG5AAJIBACFvQACSAQAhDggAAJQBACAeAACfAQAgHwAAnwEAIHABAAAAAXEBAAAABHIBAAAABHMBAAAAAXQBAAAAAXUBAAAAAXYBAAAAAXcBAJ4BACF-AQAAAAF_AQAAAAGAAQEAAAABDggAAJYBACAeAACdAQAgHwAAnQEAIHABAAAAAXEBAAAABXIBAAAABXMBAAAAAXQBAAAAAXUBAAAAAXYBAAAAAXcBAJwBACF-AQAAAAF_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-AQAAAAF_AQAAAAGAAQEAAAABCHBAAAAAAXFAAAAABHJAAAAABHNAAAAAAXRAAAAAAXVAAAAAAXZAAAAAAXdAAJUBACEDjAEAAAkAII0BAAAJACCOAQAACQAgA4wBAAANACCNAQAADQAgjgEAAA0AIAOMAQAAAwAgjQEAAAMAII4BAAADACAMYgAArAEAMGMAACsAEGQAAKwBADBlAQCNAQAhbkAAkgEAIW9AAJIBACGPAQEAjQEAIZABAQCNAQAhkQEIAK0BACGSAQgArQEAIZMBAQCOAQAhlAEAAK4BACANCAAAlAEAIBwAAJsBACAdAACbAQAgHgAAmwEAIB8AAJsBACBwCAAAAAFxCAAAAARyCAAAAARzCAAAAAF0CAAAAAF1CAAAAAF2CAAAAAF3CACvAQAhBHABAAAABZUBAQAAAAGWAQEAAAAElwEBAAAABA0IAACUAQAgHAAAmwEAIB0AAJsBACAeAACbAQAgHwAAmwEAIHAIAAAAAXEIAAAABHIIAAAABHMIAAAAAXQIAAAAAXUIAAAAAXYIAAAAAXcIAK8BACENCQAAqwEAIGIAALABADBjAAAYABBkAACwAQAwZQEAsQEAIW5AAKgBACFvQACoAQAhjwEBALEBACGQAQEAsQEAIZEBCACyAQAhkgEIALIBACGTAQEApwEAIZQBAACuAQAgC3ABAAAAAXEBAAAABHIBAAAABHMBAAAAAXQBAAAAAXUBAAAAAXYBAAAAAXcBAJ8BACF-AQAAAAF_AQAAAAGAAQEAAAABCHAIAAAAAXEIAAAABHIIAAAABHMIAAAAAXQIAAAAAXUIAAAAAXYIAAAAAXcIAJsBACEOBAAAtQEAIGIAALMBADBjAAANABBkAACzAQAwZQEAsQEAIWcBAKcBACFrAQCxAQAhbkAAqAEAIW9AAKgBACGBAQEAsQEAIYIBAQCnAQAhgwEBAKcBACGEAQIAtAEAIYUBQACoAQAhCHACAAAAAXECAAAABXICAAAABXMCAAAAAXQCAAAAAXUCAAAAAXYCAAAAAXcCAJYBACERBQAAqQEAIAYAAKoBACAHAACrAQAgYgAApgEAMGMAAAcAEGQAAKYBADBlAQCxAQAhbkAAqAEAIW9AAKgBACGGAQEAsQEAIYcBAQCnAQAhiAEBAKcBACGJAQEApwEAIYoBAQCnAQAhiwEBAKcBACGYAQAABwAgmQEAAAcAIAkEAAC3AQAgYgAAtgEAMGMAAAkAEGQAALYBADBlAQCxAQAhZwEAsQEAIW5AAKgBACGBAQEAsQEAIYUBQACoAQAhEQUAAKkBACAGAACqAQAgBwAAqwEAIGIAAKYBADBjAAAHABBkAACmAQAwZQEAsQEAIW5AAKgBACFvQACoAQAhhgEBALEBACGHAQEApwEAIYgBAQCnAQAhiQEBAKcBACGKAQEApwEAIYsBAQCnAQAhmAEAAAcAIJkBAAAHACAPAwAAvAEAIAQAALUBACBiAAC4AQAwYwAAAwAQZAAAuAEAMGUBALEBACFmAQCxAQAhZwEApwEAIWgCALkBACFpAQCxAQAhawAAugFrImwBAKcBACFtAAC7AQAgbkAAqAEAIW9AAKgBACEIcAIAAAABcQIAAAAEcgIAAAAEcwIAAAABdAIAAAABdQIAAAABdgIAAAABdwIAlAEAIQRwAAAAawJxAAAAawhyAAAAawh3AACZAWsiDHCAAAAAAXOAAAAAAXSAAAAAAXWAAAAAAXaAAAAAAXeAAAAAAXgBAAAAAXkBAAAAAXoBAAAAAXuAAAAAAXyAAAAAAX2AAAAAAQ8JAACrAQAgYgAAsAEAMGMAABgAEGQAALABADBlAQCxAQAhbkAAqAEAIW9AAKgBACGPAQEAsQEAIZABAQCxAQAhkQEIALIBACGSAQgAsgEAIZMBAQCnAQAhlAEAAK4BACCYAQAAGAAgmQEAABgAIAAAAAAAAAGdAQEAAAABBZ0BAgAAAAGkAQIAAAABpQECAAAAAaYBAgAAAAGnAQIAAAABAZ0BAAAAawIBnQEBAAAAAQGdAUAAAAABBRYAAK4CACAXAAC0AgAgmgEAAK8CACCbAQAAswIAIKABAAABACAHFgAArAIAIBcAALECACCaAQAArQIAIJsBAACwAgAgngEAAAcAIJ8BAAAHACCgAQAALgAgAxYAAK4CACCaAQAArwIAIKABAAABACADFgAArAIAIJoBAACtAgAgoAEAAC4AIAAAAAAABZ0BAgAAAAGkAQIAAAABpQECAAAAAaYBAgAAAAGnAQIAAAABBxYAAKcCACAXAACqAgAgmgEAAKgCACCbAQAAqQIAIJ4BAAAHACCfAQAABwAgoAEAAC4AIAMWAACnAgAgmgEAAKgCACCgAQAALgAgAAAABRYAAKICACAXAAClAgAgmgEAAKMCACCbAQAApAIAIKABAAAuACADFgAAogIAIJoBAACjAgAgoAEAAC4AIAAAAAsWAAD3AQAwFwAA_AEAMJoBAAD4AQAwmwEAAPkBADCcAQAA-gEAIJ0BAAD7AQAwngEAAPsBADCfAQAA-wEAMKABAAD7AQAwoQEAAP0BADCiAQAA_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_AQAgDwAAgAIAIAhiAAD-AQAwYwAA_wEAEGQAAP4BADBlAQCxAQAhZwEAsQEAIW5AAKgBACGBAQEAsQEAIYUBQACoAQAhCGIAAP4BADBjAAD_AQAQZAAA_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-VgQ_VwhAWhtBWx9CXAVDXQVEXgVFXwVGYAVHYgVIZAhJZSBKaAVLaghMayFNbQVObgVPbwhQciJRcyhSdAJTdQJUdgJVdwJWeAJXegJYfAhZfSlagAECW4IBCFyDASpdhQECXoYBAl-HAQhgigErYYsBMQ" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"place\",\"user\",\"sessions\",\"loginRequests\",\"voiceExperiences\",\"_count\",\"experiences\",\"Place.findUnique\",\"Place.findUniqueOrThrow\",\"Place.findFirst\",\"Place.findFirstOrThrow\",\"Place.findMany\",\"data\",\"Place.createOne\",\"Place.createMany\",\"Place.createManyAndReturn\",\"Place.updateOne\",\"Place.updateMany\",\"Place.updateManyAndReturn\",\"create\",\"update\",\"Place.upsertOne\",\"Place.deleteOne\",\"Place.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Place.groupBy\",\"Place.aggregate\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserSession.findUnique\",\"UserSession.findUniqueOrThrow\",\"UserSession.findFirst\",\"UserSession.findFirstOrThrow\",\"UserSession.findMany\",\"UserSession.createOne\",\"UserSession.createMany\",\"UserSession.createManyAndReturn\",\"UserSession.updateOne\",\"UserSession.updateMany\",\"UserSession.updateManyAndReturn\",\"UserSession.upsertOne\",\"UserSession.deleteOne\",\"UserSession.deleteMany\",\"UserSession.groupBy\",\"UserSession.aggregate\",\"TelegramLoginRequest.findUnique\",\"TelegramLoginRequest.findUniqueOrThrow\",\"TelegramLoginRequest.findFirst\",\"TelegramLoginRequest.findFirstOrThrow\",\"TelegramLoginRequest.findMany\",\"TelegramLoginRequest.createOne\",\"TelegramLoginRequest.createMany\",\"TelegramLoginRequest.createManyAndReturn\",\"TelegramLoginRequest.updateOne\",\"TelegramLoginRequest.updateMany\",\"TelegramLoginRequest.updateManyAndReturn\",\"TelegramLoginRequest.upsertOne\",\"TelegramLoginRequest.deleteOne\",\"TelegramLoginRequest.deleteMany\",\"TelegramLoginRequest.groupBy\",\"TelegramLoginRequest.aggregate\",\"VoiceExperience.findUnique\",\"VoiceExperience.findUniqueOrThrow\",\"VoiceExperience.findFirst\",\"VoiceExperience.findFirstOrThrow\",\"VoiceExperience.findMany\",\"VoiceExperience.createOne\",\"VoiceExperience.createMany\",\"VoiceExperience.createManyAndReturn\",\"VoiceExperience.updateOne\",\"VoiceExperience.updateMany\",\"VoiceExperience.updateManyAndReturn\",\"VoiceExperience.upsertOne\",\"VoiceExperience.deleteOne\",\"VoiceExperience.deleteMany\",\"VoiceExperience.groupBy\",\"VoiceExperience.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"placeId\",\"userId\",\"durationSeconds\",\"audioObjectKey\",\"audioContentBase64\",\"audioMimeType\",\"audioAccessToken\",\"VoiceExperienceStatus\",\"status\",\"transcript\",\"analysis\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"tokenHash\",\"sessionToken\",\"telegramChatId\",\"telegramMessageId\",\"expiresAt\",\"telegramId\",\"username\",\"firstName\",\"lastName\",\"photoUrl\",\"languageCode\",\"isAdmin\",\"every\",\"some\",\"none\",\"googlePlaceId\",\"name\",\"latitude\",\"longitude\",\"googlePrimaryType\",\"googleTypes\",\"has\",\"hasEvery\",\"hasSome\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "ugIxUA0JAACvAQAgYgAAtAEAMGMAABgAEGQAALQBADBlAQAAAAFxQACsAQAhckAArAEAIZMBAQAAAAGUAQEAtQEAIZUBCAC2AQAhlgEIALYBACGXAQEAqgEAIZgBAACyAQAgAQAAAAEAIBIDAADAAQAgBAAAuQEAIGIAALwBADBjAAADABBkAAC8AQAwZQEAtQEAIWYBALUBACFnAQCqAQAhaAIAvQEAIWkBALUBACFqAQCqAQAhawEAqgEAIWwBAKoBACFuAAC-AW4ibwEAqgEAIXAAAL8BACBxQACsAQAhckAArAEAIQgDAACiAgAgBAAAoQIAIGcAAMEBACBqAADBAQAgawAAwQEAIGwAAMEBACBvAADBAQAgcAAAwQEAIBIDAADAAQAgBAAAuQEAIGIAALwBADBjAAADABBkAAC8AQAwZQEAAAABZgEAtQEAIWcBAKoBACFoAgC9AQAhaQEAtQEAIWoBAKoBACFrAQCqAQAhbAEAAAABbgAAvgFuIm8BAKoBACFwAAC_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_AQAgcUAArAEAIXJAAKwBACEIcwIAAAABdAIAAAAEdQIAAAAEdgIAAAABdwIAAAABeAIAAAABeQIAAAABegIAlAEAIQRzAAAAbgJ0AAAAbgh1AAAAbgh6AACZAW4iDHOAAAAAAXaAAAAAAXeAAAAAAXiAAAAAAXmAAAAAAXqAAAAAAXsBAAAAAXwBAAAAAX0BAAAAAX6AAAAAAX-AAAAAAYABgAAAAAEPCQAArwEAIGIAALQBADBjAAAYABBkAAC0AQAwZQEAtQEAIXFAAKwBACFyQACsAQAhkwEBALUBACGUAQEAtQEAIZUBCAC2AQAhlgEIALYBACGXAQEAqgEAIZgBAACyAQAgnAEAABgAIJ0BAAAYACAAAAAAAAABoQEBAAAAAQWhAQIAAAABqAECAAAAAakBAgAAAAGqAQIAAAABqwECAAAAAQGhAQEAAAABAaEBAAAAbgIBoQFAAAAAAQUWAACzAgAgFwAAuQIAIJ4BAAC0AgAgnwEAALgCACCkAQAAAQAgBxYAALECACAXAAC2AgAgngEAALICACCfAQAAtQIAIKIBAAAHACCjAQAABwAgpAEAAC4AIAMWAACzAgAgngEAALQCACCkAQAAAQAgAxYAALECACCeAQAAsgIAIKQBAAAuACAAAAAAAAWhAQIAAAABqAECAAAAAakBAgAAAAGqAQIAAAABqwECAAAAAQcWAACsAgAgFwAArwIAIJ4BAACtAgAgnwEAAK4CACCiAQAABwAgowEAAAcAIKQBAAAuACADFgAArAIAIJ4BAACtAgAgpAEAAC4AIAAAAAUWAACnAgAgFwAAqgIAIJ4BAACoAgAgnwEAAKkCACCkAQAALgAgAxYAAKcCACCeAQAAqAIAIKQBAAAuACAAAAABoQEgAAAAAQsWAAD8AQAwFwAAgQIAMJ4BAAD9AQAwnwEAAP4BADCgAQAA_wEAIKEBAACAAgAwogEAAIACADCjAQAAgAIAMKQBAACAAgAwpQEAAIICADCmAQAAgwIAMAsWAADwAQAwFwAA9QEAMJ4BAADxAQAwnwEAAPIBADCgAQAA8wEAIKEBAAD0AQAwogEAAPQBADCjAQAA9AEAMKQBAAD0AQAwpQEAAPYBADCmAQAA9wEAMAsWAADkAQAwFwAA6QEAMJ4BAADlAQAwnwEAAOYBADCgAQAA5wEAIKEBAADoAQAwogEAAOgBADCjAQAA6AEAMKQBAADoAQAwpQEAAOoBADCmAQAA6wEAMA0DAADOAQAgZQEAAAABZgEAAAABaAIAAAABaQEAAAABagEAAAABawEAAAABbAEAAAABbgAAAG4CbwEAAAABcIAAAAABcUAAAAABckAAAAABAgAAAAUAIBYAAO8BACADAAAABQAgFgAA7wEAIBcAAO4BACABDwAApgIAMBIDAADAAQAgBAAAuQEAIGIAALwBADBjAAADABBkAAC8AQAwZQEAAAABZgEAtQEAIWcBAKoBACFoAgC9AQAhaQEAtQEAIWoBAKoBACFrAQCqAQAhbAEAAAABbgAAvgFuIm8BAKoBACFwAAC_AQAgcUAArAEAIXJAAKwBACECAAAABQAgDwAA7gEAIAIAAADsAQAgDwAA7QEAIBBiAADrAQAwYwAA7AEAEGQAAOsBADBlAQC1AQAhZgEAtQEAIWcBAKoBACFoAgC9AQAhaQEAtQEAIWoBAKoBACFrAQCqAQAhbAEAqgEAIW4AAL4BbiJvAQCqAQAhcAAAvwEAIHFAAKwBACFyQACsAQAhEGIAAOsBADBjAADsAQAQZAAA6wEAMGUBALUBACFmAQC1AQAhZwEAqgEAIWgCAL0BACFpAQC1AQAhagEAqgEAIWsBAKoBACFsAQCqAQAhbgAAvgFuIm8BAKoBACFwAAC_AQAgcUAArAEAIXJAAKwBACEMZQEAxwEAIWYBAMcBACFoAgDIAQAhaQEAxwEAIWoBAMkBACFrAQDJAQAhbAEAyQEAIW4AAMoBbiJvAQDJAQAhcIAAAAABcUAAywEAIXJAAMsBACENAwAAzAEAIGUBAMcBACFmAQDHAQAhaAIAyAEAIWkBAMcBACFqAQDJAQAhawEAyQEAIWwBAMkBACFuAADKAW4ibwEAyQEAIXCAAAAAAXFAAMsBACFyQADLAQAhDQMAAM4BACBlAQAAAAFmAQAAAAFoAgAAAAFpAQAAAAFqAQAAAAFrAQAAAAFsAQAAAAFuAAAAbgJvAQAAAAFwgAAAAAFxQAAAAAFyQAAAAAEJZQEAAAABbgEAAAABcUAAAAABckAAAAABhAEBAAAAAYUBAQAAAAGGAQEAAAABhwECAAAAAYgBQAAAAAECAAAADwAgFgAA-wEAIAMAAAAPACAWAAD7AQAgFwAA-gEAIAEPAAClAgAwDgQAALkBACBiAAC3AQAwYwAADQAQZAAAtwEAMGUBAAAAAWcBAKoBACFuAQC1AQAhcUAArAEAIXJAAKwBACGEAQEAAAABhQEBAKoBACGGAQEAqgEAIYcBAgC4AQAhiAFAAKwBACECAAAADwAgDwAA-gEAIAIAAAD4AQAgDwAA-QEAIA1iAAD3AQAwYwAA-AEAEGQAAPcBADBlAQC1AQAhZwEAqgEAIW4BALUBACFxQACsAQAhckAArAEAIYQBAQC1AQAhhQEBAKoBACGGAQEAqgEAIYcBAgC4AQAhiAFAAKwBACENYgAA9wEAMGMAAPgBABBkAAD3AQAwZQEAtQEAIWcBAKoBACFuAQC1AQAhcUAArAEAIXJAAKwBACGEAQEAtQEAIYUBAQCqAQAhhgEBAKoBACGHAQIAuAEAIYgBQACsAQAhCWUBAMcBACFuAQDHAQAhcUAAywEAIXJAAMsBACGEAQEAxwEAIYUBAQDJAQAhhgEBAMkBACGHAQIA1QEAIYgBQADLAQAhCWUBAMcBACFuAQDHAQAhcUAAywEAIXJAAMsBACGEAQEAxwEAIYUBAQDJAQAhhgEBAMkBACGHAQIA1QEAIYgBQADLAQAhCWUBAAAAAW4BAAAAAXFAAAAAAXJAAAAAAYQBAQAAAAGFAQEAAAABhgEBAAAAAYcBAgAAAAGIAUAAAAABBGUBAAAAAXFAAAAAAYQBAQAAAAGIAUAAAAABAgAAAAsAIBYAAIcCACADAAAACwAgFgAAhwIAIBcAAIYCACABDwAApAIAMAkEAAC7AQAgYgAAugEAMGMAAAkAEGQAALoBADBlAQAAAAFnAQC1AQAhcUAArAEAIYQBAQAAAAGIAUAArAEAIQIAAAALACAPAACGAgAgAgAAAIQCACAPAACFAgAgCGIAAIMCADBjAACEAgAQZAAAgwIAMGUBALUBACFnAQC1AQAhcUAArAEAIYQBAQC1AQAhiAFAAKwBACEIYgAAgwIAMGMAAIQCABBkAACDAgAwZQEAtQEAIWcBALUBACFxQACsAQAhhAEBALUBACGIAUAArAEAIQRlAQDHAQAhcUAAywEAIYQBAQDHAQAhiAFAAMsBACEEZQEAxwEAIXFAAMsBACGEAQEAxwEAIYgBQADLAQAhBGUBAAAAAXFAAAAAAYQBAQAAAAGIAUAAAAABBBYAAPwBADCeAQAA_QEAMKABAAD_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-Ey0_Ay5AAy9BCDBEFDFFGDJGBDNHBDRIBDVJBDZKBDdMBDhOCDlPGTpRBDtTCDxUGj1VBD5WBD9XCEBaG0FbH0JcBUNdBUReBUVfBUZgBUdiBUhkCEllIEpoBUtqCExrIU1tBU5uBU9vCFByIlFzKFJ0AlN1AlR2AlV3AlZ4Ald6Alh8CFl9KVqAAQJbggEIXIMBKl2FAQJehgECX4cBCGCKASthiwEx" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/src/generated/prisma/index-browser.js b/src/generated/prisma/index-browser.js index 79768da..64a1b65 100644 --- a/src/generated/prisma/index-browser.js +++ b/src/generated/prisma/index-browser.js @@ -140,6 +140,7 @@ exports.Prisma.UserScalarFieldEnum = { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -171,6 +172,9 @@ exports.Prisma.VoiceExperienceScalarFieldEnum = { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', diff --git a/src/generated/prisma/index.d.ts b/src/generated/prisma/index.d.ts index 4b39b07..fb6ecc9 100644 --- a/src/generated/prisma/index.d.ts +++ b/src/generated/prisma/index.d.ts @@ -2509,6 +2509,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean | null createdAt: Date | null updatedAt: Date | null } @@ -2521,6 +2522,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean | null createdAt: Date | null updatedAt: Date | null } @@ -2533,6 +2535,7 @@ export namespace Prisma { lastName: number photoUrl: number languageCode: number + isAdmin: number createdAt: number updatedAt: number _all: number @@ -2547,6 +2550,7 @@ export namespace Prisma { lastName?: true photoUrl?: true languageCode?: true + isAdmin?: true createdAt?: true updatedAt?: true } @@ -2559,6 +2563,7 @@ export namespace Prisma { lastName?: true photoUrl?: true languageCode?: true + isAdmin?: true createdAt?: true updatedAt?: true } @@ -2571,6 +2576,7 @@ export namespace Prisma { lastName?: true photoUrl?: true languageCode?: true + isAdmin?: true createdAt?: true updatedAt?: true _all?: true @@ -2656,6 +2662,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean createdAt: Date updatedAt: Date _count: UserCountAggregateOutputType | null @@ -2685,6 +2692,7 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean sessions?: boolean | User$sessionsArgs @@ -2701,6 +2709,7 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean }, ExtArgs["result"]["user"]> @@ -2713,6 +2722,7 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean }, ExtArgs["result"]["user"]> @@ -2725,11 +2735,12 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean } - export type UserOmit = $Extensions.GetOmit<"id" | "telegramId" | "username" | "firstName" | "lastName" | "photoUrl" | "languageCode" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> + export type UserOmit = $Extensions.GetOmit<"id" | "telegramId" | "username" | "firstName" | "lastName" | "photoUrl" | "languageCode" | "isAdmin" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> export type UserInclude = { sessions?: boolean | User$sessionsArgs loginRequests?: boolean | User$loginRequestsArgs @@ -2754,6 +2765,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean createdAt: Date updatedAt: Date }, ExtArgs["result"]["user"]> @@ -3189,6 +3201,7 @@ export namespace Prisma { readonly lastName: FieldRef<"User", 'String'> readonly photoUrl: FieldRef<"User", 'String'> readonly languageCode: FieldRef<"User", 'String'> + readonly isAdmin: FieldRef<"User", 'Boolean'> readonly createdAt: FieldRef<"User", 'DateTime'> readonly updatedAt: FieldRef<"User", 'DateTime'> } @@ -5944,6 +5957,9 @@ export namespace Prisma { userId: string | null durationSeconds: number | null audioObjectKey: string | null + audioContentBase64: string | null + audioMimeType: string | null + audioAccessToken: string | null status: $Enums.VoiceExperienceStatus | null transcript: string | null createdAt: Date | null @@ -5956,6 +5972,9 @@ export namespace Prisma { userId: string | null durationSeconds: number | null audioObjectKey: string | null + audioContentBase64: string | null + audioMimeType: string | null + audioAccessToken: string | null status: $Enums.VoiceExperienceStatus | null transcript: string | null createdAt: Date | null @@ -5968,6 +5987,9 @@ export namespace Prisma { userId: number durationSeconds: number audioObjectKey: number + audioContentBase64: number + audioMimeType: number + audioAccessToken: number status: number transcript: number analysis: number @@ -5991,6 +6013,9 @@ export namespace Prisma { userId?: true durationSeconds?: true audioObjectKey?: true + audioContentBase64?: true + audioMimeType?: true + audioAccessToken?: true status?: true transcript?: true createdAt?: true @@ -6003,6 +6028,9 @@ export namespace Prisma { userId?: true durationSeconds?: true audioObjectKey?: true + audioContentBase64?: true + audioMimeType?: true + audioAccessToken?: true status?: true transcript?: true createdAt?: true @@ -6015,6 +6043,9 @@ export namespace Prisma { userId?: true durationSeconds?: true audioObjectKey?: true + audioContentBase64?: true + audioMimeType?: true + audioAccessToken?: true status?: true transcript?: true analysis?: true @@ -6115,6 +6146,9 @@ export namespace Prisma { userId: string | null durationSeconds: number audioObjectKey: string + audioContentBase64: string | null + audioMimeType: string | null + audioAccessToken: string | null status: $Enums.VoiceExperienceStatus transcript: string | null analysis: JsonValue | null @@ -6147,6 +6181,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -6162,6 +6199,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -6177,6 +6217,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -6192,6 +6235,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -6199,7 +6245,7 @@ export namespace Prisma { updatedAt?: boolean } - export type VoiceExperienceOmit = $Extensions.GetOmit<"id" | "placeId" | "userId" | "durationSeconds" | "audioObjectKey" | "status" | "transcript" | "analysis" | "createdAt" | "updatedAt", ExtArgs["result"]["voiceExperience"]> + export type VoiceExperienceOmit = $Extensions.GetOmit<"id" | "placeId" | "userId" | "durationSeconds" | "audioObjectKey" | "audioContentBase64" | "audioMimeType" | "audioAccessToken" | "status" | "transcript" | "analysis" | "createdAt" | "updatedAt", ExtArgs["result"]["voiceExperience"]> export type VoiceExperienceInclude = { place?: boolean | PlaceDefaultArgs user?: boolean | VoiceExperience$userArgs @@ -6225,6 +6271,9 @@ export namespace Prisma { userId: string | null durationSeconds: number audioObjectKey: string + audioContentBase64: string | null + audioMimeType: string | null + audioAccessToken: string | null status: $Enums.VoiceExperienceStatus transcript: string | null analysis: Prisma.JsonValue | null @@ -6660,6 +6709,9 @@ export namespace Prisma { readonly userId: FieldRef<"VoiceExperience", 'String'> readonly durationSeconds: FieldRef<"VoiceExperience", 'Int'> readonly audioObjectKey: FieldRef<"VoiceExperience", 'String'> + readonly audioContentBase64: FieldRef<"VoiceExperience", 'String'> + readonly audioMimeType: FieldRef<"VoiceExperience", 'String'> + readonly audioAccessToken: FieldRef<"VoiceExperience", 'String'> readonly status: FieldRef<"VoiceExperience", 'VoiceExperienceStatus'> readonly transcript: FieldRef<"VoiceExperience", 'String'> readonly analysis: FieldRef<"VoiceExperience", 'Json'> @@ -7140,6 +7192,7 @@ export namespace Prisma { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -7180,6 +7233,9 @@ export namespace Prisma { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', @@ -7278,6 +7334,13 @@ export namespace Prisma { + /** + * Reference to a field of type 'Boolean' + */ + export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + + + /** * Reference to a field of type 'Int' */ @@ -7411,6 +7474,7 @@ export namespace Prisma { lastName?: StringNullableFilter<"User"> | string | null photoUrl?: StringNullableFilter<"User"> | string | null languageCode?: StringNullableFilter<"User"> | string | null + isAdmin?: BoolFilter<"User"> | boolean createdAt?: DateTimeFilter<"User"> | Date | string updatedAt?: DateTimeFilter<"User"> | Date | string sessions?: UserSessionListRelationFilter @@ -7426,6 +7490,7 @@ export namespace Prisma { lastName?: SortOrderInput | SortOrder photoUrl?: SortOrderInput | SortOrder languageCode?: SortOrderInput | SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder sessions?: UserSessionOrderByRelationAggregateInput @@ -7444,6 +7509,7 @@ export namespace Prisma { lastName?: StringNullableFilter<"User"> | string | null photoUrl?: StringNullableFilter<"User"> | string | null languageCode?: StringNullableFilter<"User"> | string | null + isAdmin?: BoolFilter<"User"> | boolean createdAt?: DateTimeFilter<"User"> | Date | string updatedAt?: DateTimeFilter<"User"> | Date | string sessions?: UserSessionListRelationFilter @@ -7459,6 +7525,7 @@ export namespace Prisma { lastName?: SortOrderInput | SortOrder photoUrl?: SortOrderInput | SortOrder languageCode?: SortOrderInput | SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder _count?: UserCountOrderByAggregateInput @@ -7477,6 +7544,7 @@ export namespace Prisma { lastName?: StringNullableWithAggregatesFilter<"User"> | string | null photoUrl?: StringNullableWithAggregatesFilter<"User"> | string | null languageCode?: StringNullableWithAggregatesFilter<"User"> | string | null + isAdmin?: BoolWithAggregatesFilter<"User"> | boolean createdAt?: DateTimeWithAggregatesFilter<"User"> | Date | string updatedAt?: DateTimeWithAggregatesFilter<"User"> | Date | string } @@ -7627,6 +7695,9 @@ export namespace Prisma { userId?: StringNullableFilter<"VoiceExperience"> | string | null durationSeconds?: IntFilter<"VoiceExperience"> | number audioObjectKey?: StringFilter<"VoiceExperience"> | string + audioContentBase64?: StringNullableFilter<"VoiceExperience"> | string | null + audioMimeType?: StringNullableFilter<"VoiceExperience"> | string | null + audioAccessToken?: StringNullableFilter<"VoiceExperience"> | string | null status?: EnumVoiceExperienceStatusFilter<"VoiceExperience"> | $Enums.VoiceExperienceStatus transcript?: StringNullableFilter<"VoiceExperience"> | string | null analysis?: JsonNullableFilter<"VoiceExperience"> @@ -7642,6 +7713,9 @@ export namespace Prisma { userId?: SortOrderInput | SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrderInput | SortOrder + audioMimeType?: SortOrderInput | SortOrder + audioAccessToken?: SortOrderInput | SortOrder status?: SortOrder transcript?: SortOrderInput | SortOrder analysis?: SortOrderInput | SortOrder @@ -7653,6 +7727,7 @@ export namespace Prisma { export type VoiceExperienceWhereUniqueInput = Prisma.AtLeast<{ id?: string + audioAccessToken?: string AND?: VoiceExperienceWhereInput | VoiceExperienceWhereInput[] OR?: VoiceExperienceWhereInput[] NOT?: VoiceExperienceWhereInput | VoiceExperienceWhereInput[] @@ -7660,6 +7735,8 @@ export namespace Prisma { userId?: StringNullableFilter<"VoiceExperience"> | string | null durationSeconds?: IntFilter<"VoiceExperience"> | number audioObjectKey?: StringFilter<"VoiceExperience"> | string + audioContentBase64?: StringNullableFilter<"VoiceExperience"> | string | null + audioMimeType?: StringNullableFilter<"VoiceExperience"> | string | null status?: EnumVoiceExperienceStatusFilter<"VoiceExperience"> | $Enums.VoiceExperienceStatus transcript?: StringNullableFilter<"VoiceExperience"> | string | null analysis?: JsonNullableFilter<"VoiceExperience"> @@ -7667,7 +7744,7 @@ export namespace Prisma { updatedAt?: DateTimeFilter<"VoiceExperience"> | Date | string place?: XOR user?: XOR | null - }, "id"> + }, "id" | "audioAccessToken"> export type VoiceExperienceOrderByWithAggregationInput = { id?: SortOrder @@ -7675,6 +7752,9 @@ export namespace Prisma { userId?: SortOrderInput | SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrderInput | SortOrder + audioMimeType?: SortOrderInput | SortOrder + audioAccessToken?: SortOrderInput | SortOrder status?: SortOrder transcript?: SortOrderInput | SortOrder analysis?: SortOrderInput | SortOrder @@ -7696,6 +7776,9 @@ export namespace Prisma { userId?: StringNullableWithAggregatesFilter<"VoiceExperience"> | string | null durationSeconds?: IntWithAggregatesFilter<"VoiceExperience"> | number audioObjectKey?: StringWithAggregatesFilter<"VoiceExperience"> | string + audioContentBase64?: StringNullableWithAggregatesFilter<"VoiceExperience"> | string | null + audioMimeType?: StringNullableWithAggregatesFilter<"VoiceExperience"> | string | null + audioAccessToken?: StringNullableWithAggregatesFilter<"VoiceExperience"> | string | null status?: EnumVoiceExperienceStatusWithAggregatesFilter<"VoiceExperience"> | $Enums.VoiceExperienceStatus transcript?: StringNullableWithAggregatesFilter<"VoiceExperience"> | string | null analysis?: JsonNullableWithAggregatesFilter<"VoiceExperience"> @@ -7799,6 +7882,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string sessions?: UserSessionCreateNestedManyWithoutUserInput @@ -7814,6 +7898,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string sessions?: UserSessionUncheckedCreateNestedManyWithoutUserInput @@ -7829,6 +7914,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string sessions?: UserSessionUpdateManyWithoutUserNestedInput @@ -7844,6 +7930,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string sessions?: UserSessionUncheckedUpdateManyWithoutUserNestedInput @@ -7859,6 +7946,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string } @@ -7871,6 +7959,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -7883,6 +7972,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -8036,6 +8126,9 @@ export namespace Prisma { id?: string durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8051,6 +8144,9 @@ export namespace Prisma { userId?: string | null durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8062,6 +8158,9 @@ export namespace Prisma { id?: StringFieldUpdateOperationsInput | string durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8077,6 +8176,9 @@ export namespace Prisma { userId?: NullableStringFieldUpdateOperationsInput | string | null durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8090,6 +8192,9 @@ export namespace Prisma { userId?: string | null durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8101,6 +8206,9 @@ export namespace Prisma { id?: StringFieldUpdateOperationsInput | string durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8114,6 +8222,9 @@ export namespace Prisma { userId?: NullableStringFieldUpdateOperationsInput | string | null durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -8306,6 +8417,11 @@ export namespace Prisma { _max?: NestedDateTimeFilter<$PrismaModel> } + export type BoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean + } + export type UserSessionListRelationFilter = { every?: UserSessionWhereInput some?: UserSessionWhereInput @@ -8334,6 +8450,7 @@ export namespace Prisma { lastName?: SortOrder photoUrl?: SortOrder languageCode?: SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder } @@ -8346,6 +8463,7 @@ export namespace Prisma { lastName?: SortOrder photoUrl?: SortOrder languageCode?: SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder } @@ -8358,10 +8476,19 @@ export namespace Prisma { lastName?: SortOrder photoUrl?: SortOrder languageCode?: SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder } + export type BoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedBoolFilter<$PrismaModel> + _max?: NestedBoolFilter<$PrismaModel> + } + export type UserScalarRelationFilter = { is?: UserWhereInput isNot?: UserWhereInput @@ -8522,6 +8649,9 @@ export namespace Prisma { userId?: SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrder + audioMimeType?: SortOrder + audioAccessToken?: SortOrder status?: SortOrder transcript?: SortOrder analysis?: SortOrder @@ -8539,6 +8669,9 @@ export namespace Prisma { userId?: SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrder + audioMimeType?: SortOrder + audioAccessToken?: SortOrder status?: SortOrder transcript?: SortOrder createdAt?: SortOrder @@ -8551,6 +8684,9 @@ export namespace Prisma { userId?: SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrder + audioMimeType?: SortOrder + audioAccessToken?: SortOrder status?: SortOrder transcript?: SortOrder createdAt?: SortOrder @@ -8726,6 +8862,10 @@ export namespace Prisma { connect?: VoiceExperienceWhereUniqueInput | VoiceExperienceWhereUniqueInput[] } + export type BoolFieldUpdateOperationsInput = { + set?: boolean + } + export type UserSessionUpdateManyWithoutUserNestedInput = { create?: XOR | UserSessionCreateWithoutUserInput[] | UserSessionUncheckedCreateWithoutUserInput[] connectOrCreate?: UserSessionCreateOrConnectWithoutUserInput | UserSessionCreateOrConnectWithoutUserInput[] @@ -9026,6 +9166,19 @@ export namespace Prisma { _max?: NestedDateTimeFilter<$PrismaModel> } + export type NestedBoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean + } + + export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedBoolFilter<$PrismaModel> + _max?: NestedBoolFilter<$PrismaModel> + } + export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { equals?: number | IntFieldRefInput<$PrismaModel> | null in?: number[] | ListIntFieldRefInput<$PrismaModel> | null @@ -9113,6 +9266,9 @@ export namespace Prisma { id?: string durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9126,6 +9282,9 @@ export namespace Prisma { userId?: string | null durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9168,6 +9327,9 @@ export namespace Prisma { userId?: StringNullableFilter<"VoiceExperience"> | string | null durationSeconds?: IntFilter<"VoiceExperience"> | number audioObjectKey?: StringFilter<"VoiceExperience"> | string + audioContentBase64?: StringNullableFilter<"VoiceExperience"> | string | null + audioMimeType?: StringNullableFilter<"VoiceExperience"> | string | null + audioAccessToken?: StringNullableFilter<"VoiceExperience"> | string | null status?: EnumVoiceExperienceStatusFilter<"VoiceExperience"> | $Enums.VoiceExperienceStatus transcript?: StringNullableFilter<"VoiceExperience"> | string | null analysis?: JsonNullableFilter<"VoiceExperience"> @@ -9237,6 +9399,9 @@ export namespace Prisma { id?: string durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9250,6 +9415,9 @@ export namespace Prisma { placeId: string durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9350,6 +9518,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string loginRequests?: TelegramLoginRequestCreateNestedManyWithoutUserInput @@ -9364,6 +9533,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string loginRequests?: TelegramLoginRequestUncheckedCreateNestedManyWithoutUserInput @@ -9394,6 +9564,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string loginRequests?: TelegramLoginRequestUpdateManyWithoutUserNestedInput @@ -9408,6 +9579,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string loginRequests?: TelegramLoginRequestUncheckedUpdateManyWithoutUserNestedInput @@ -9422,6 +9594,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string sessions?: UserSessionCreateNestedManyWithoutUserInput @@ -9436,6 +9609,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string sessions?: UserSessionUncheckedCreateNestedManyWithoutUserInput @@ -9466,6 +9640,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string sessions?: UserSessionUpdateManyWithoutUserNestedInput @@ -9480,6 +9655,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string sessions?: UserSessionUncheckedUpdateManyWithoutUserNestedInput @@ -9523,6 +9699,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string sessions?: UserSessionCreateNestedManyWithoutUserInput @@ -9537,6 +9714,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string sessions?: UserSessionUncheckedCreateNestedManyWithoutUserInput @@ -9602,6 +9780,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string sessions?: UserSessionUpdateManyWithoutUserNestedInput @@ -9616,6 +9795,7 @@ export namespace Prisma { lastName?: NullableStringFieldUpdateOperationsInput | string | null photoUrl?: NullableStringFieldUpdateOperationsInput | string | null languageCode?: NullableStringFieldUpdateOperationsInput | string | null + isAdmin?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string sessions?: UserSessionUncheckedUpdateManyWithoutUserNestedInput @@ -9627,6 +9807,9 @@ export namespace Prisma { userId?: string | null durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9638,6 +9821,9 @@ export namespace Prisma { id?: StringFieldUpdateOperationsInput | string durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9651,6 +9837,9 @@ export namespace Prisma { userId?: NullableStringFieldUpdateOperationsInput | string | null durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9663,6 +9852,9 @@ export namespace Prisma { userId?: NullableStringFieldUpdateOperationsInput | string | null durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9694,6 +9886,9 @@ export namespace Prisma { placeId: string durationSeconds: number audioObjectKey: string + audioContentBase64?: string | null + audioMimeType?: string | null + audioAccessToken?: string | null status?: $Enums.VoiceExperienceStatus transcript?: string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9762,6 +9957,9 @@ export namespace Prisma { id?: StringFieldUpdateOperationsInput | string durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9775,6 +9973,9 @@ export namespace Prisma { placeId?: StringFieldUpdateOperationsInput | string durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue @@ -9787,6 +9988,9 @@ export namespace Prisma { placeId?: StringFieldUpdateOperationsInput | string durationSeconds?: IntFieldUpdateOperationsInput | number audioObjectKey?: StringFieldUpdateOperationsInput | string + audioContentBase64?: NullableStringFieldUpdateOperationsInput | string | null + audioMimeType?: NullableStringFieldUpdateOperationsInput | string | null + audioAccessToken?: NullableStringFieldUpdateOperationsInput | string | null status?: EnumVoiceExperienceStatusFieldUpdateOperationsInput | $Enums.VoiceExperienceStatus transcript?: NullableStringFieldUpdateOperationsInput | string | null analysis?: NullableJsonNullValueInput | InputJsonValue diff --git a/src/generated/prisma/index.js b/src/generated/prisma/index.js index 6d909ef..5f0ddd0 100644 --- a/src/generated/prisma/index.js +++ b/src/generated/prisma/index.js @@ -113,6 +113,7 @@ exports.Prisma.UserScalarFieldEnum = { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -144,6 +145,9 @@ exports.Prisma.VoiceExperienceScalarFieldEnum = { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', @@ -200,14 +204,14 @@ const config = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nenum VoiceExperienceStatus {\n UPLOADED\n TRANSCRIBING\n TRANSCRIBED\n ANALYZING\n ANALYZED\n FAILED\n}\n\nmodel Place {\n id String @id @default(cuid())\n googlePlaceId String @unique\n name String\n latitude Float\n longitude Float\n googlePrimaryType String?\n googleTypes String[] @default([])\n experiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel User {\n id String @id @default(cuid())\n telegramId String @unique\n username String?\n firstName String?\n lastName String?\n photoUrl String?\n languageCode String?\n sessions UserSession[]\n loginRequests TelegramLoginRequest[]\n voiceExperiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel UserSession {\n id String @id @default(cuid())\n tokenHash String @unique\n userId String\n user User @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n}\n\nmodel TelegramLoginRequest {\n id String @id @default(cuid())\n tokenHash String @unique\n status String @default(\"PENDING\")\n sessionToken String?\n telegramChatId String?\n telegramMessageId Int?\n userId String?\n user User? @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel VoiceExperience {\n id String @id @default(cuid())\n placeId String\n place Place @relation(fields: [placeId], references: [id])\n userId String?\n user User? @relation(fields: [userId], references: [id])\n durationSeconds Int\n audioObjectKey String\n status VoiceExperienceStatus @default(UPLOADED)\n transcript String?\n analysis Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nenum VoiceExperienceStatus {\n UPLOADED\n TRANSCRIBING\n TRANSCRIBED\n ANALYZING\n ANALYZED\n FAILED\n}\n\nmodel Place {\n id String @id @default(cuid())\n googlePlaceId String @unique\n name String\n latitude Float\n longitude Float\n googlePrimaryType String?\n googleTypes String[] @default([])\n experiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel User {\n id String @id @default(cuid())\n telegramId String @unique\n username String?\n firstName String?\n lastName String?\n photoUrl String?\n languageCode String?\n isAdmin Boolean @default(false)\n sessions UserSession[]\n loginRequests TelegramLoginRequest[]\n voiceExperiences VoiceExperience[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel UserSession {\n id String @id @default(cuid())\n tokenHash String @unique\n userId String\n user User @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n}\n\nmodel TelegramLoginRequest {\n id String @id @default(cuid())\n tokenHash String @unique\n status String @default(\"PENDING\")\n sessionToken String?\n telegramChatId String?\n telegramMessageId Int?\n userId String?\n user User? @relation(fields: [userId], references: [id])\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel VoiceExperience {\n id String @id @default(cuid())\n placeId String\n place Place @relation(fields: [placeId], references: [id])\n userId String?\n user User? @relation(fields: [userId], references: [id])\n durationSeconds Int\n audioObjectKey String\n audioContentBase64 String?\n audioMimeType String?\n audioAccessToken String? @unique\n status VoiceExperienceStatus @default(UPLOADED)\n transcript String?\n analysis Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Place\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googlePlaceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"googlePrimaryType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googleTypes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"experiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"photoUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"languageCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"UserSession\",\"relationName\":\"UserToUserSession\"},{\"name\":\"loginRequests\",\"kind\":\"object\",\"type\":\"TelegramLoginRequest\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"UserSession\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSession\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TelegramLoginRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramChatId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramMessageId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"VoiceExperience\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"place\",\"kind\":\"object\",\"type\":\"Place\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"durationSeconds\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"audioObjectKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VoiceExperienceStatus\"},{\"name\":\"transcript\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"analysis\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Place\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googlePlaceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"googlePrimaryType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"googleTypes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"experiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"photoUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"languageCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAdmin\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"UserSession\",\"relationName\":\"UserToUserSession\"},{\"name\":\"loginRequests\",\"kind\":\"object\",\"type\":\"TelegramLoginRequest\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"UserSession\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSession\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TelegramLoginRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramChatId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telegramMessageId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TelegramLoginRequestToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"VoiceExperience\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"place\",\"kind\":\"object\",\"type\":\"Place\",\"relationName\":\"PlaceToVoiceExperience\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToVoiceExperience\"},{\"name\":\"durationSeconds\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"audioObjectKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"audioContentBase64\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"audioMimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"audioAccessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VoiceExperienceStatus\"},{\"name\":\"transcript\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"analysis\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"place\",\"user\",\"sessions\",\"loginRequests\",\"voiceExperiences\",\"_count\",\"experiences\",\"Place.findUnique\",\"Place.findUniqueOrThrow\",\"Place.findFirst\",\"Place.findFirstOrThrow\",\"Place.findMany\",\"data\",\"Place.createOne\",\"Place.createMany\",\"Place.createManyAndReturn\",\"Place.updateOne\",\"Place.updateMany\",\"Place.updateManyAndReturn\",\"create\",\"update\",\"Place.upsertOne\",\"Place.deleteOne\",\"Place.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Place.groupBy\",\"Place.aggregate\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserSession.findUnique\",\"UserSession.findUniqueOrThrow\",\"UserSession.findFirst\",\"UserSession.findFirstOrThrow\",\"UserSession.findMany\",\"UserSession.createOne\",\"UserSession.createMany\",\"UserSession.createManyAndReturn\",\"UserSession.updateOne\",\"UserSession.updateMany\",\"UserSession.updateManyAndReturn\",\"UserSession.upsertOne\",\"UserSession.deleteOne\",\"UserSession.deleteMany\",\"UserSession.groupBy\",\"UserSession.aggregate\",\"TelegramLoginRequest.findUnique\",\"TelegramLoginRequest.findUniqueOrThrow\",\"TelegramLoginRequest.findFirst\",\"TelegramLoginRequest.findFirstOrThrow\",\"TelegramLoginRequest.findMany\",\"TelegramLoginRequest.createOne\",\"TelegramLoginRequest.createMany\",\"TelegramLoginRequest.createManyAndReturn\",\"TelegramLoginRequest.updateOne\",\"TelegramLoginRequest.updateMany\",\"TelegramLoginRequest.updateManyAndReturn\",\"TelegramLoginRequest.upsertOne\",\"TelegramLoginRequest.deleteOne\",\"TelegramLoginRequest.deleteMany\",\"TelegramLoginRequest.groupBy\",\"TelegramLoginRequest.aggregate\",\"VoiceExperience.findUnique\",\"VoiceExperience.findUniqueOrThrow\",\"VoiceExperience.findFirst\",\"VoiceExperience.findFirstOrThrow\",\"VoiceExperience.findMany\",\"VoiceExperience.createOne\",\"VoiceExperience.createMany\",\"VoiceExperience.createManyAndReturn\",\"VoiceExperience.updateOne\",\"VoiceExperience.updateMany\",\"VoiceExperience.updateManyAndReturn\",\"VoiceExperience.upsertOne\",\"VoiceExperience.deleteOne\",\"VoiceExperience.deleteMany\",\"VoiceExperience.groupBy\",\"VoiceExperience.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"placeId\",\"userId\",\"durationSeconds\",\"audioObjectKey\",\"VoiceExperienceStatus\",\"status\",\"transcript\",\"analysis\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"tokenHash\",\"sessionToken\",\"telegramChatId\",\"telegramMessageId\",\"expiresAt\",\"telegramId\",\"username\",\"firstName\",\"lastName\",\"photoUrl\",\"languageCode\",\"every\",\"some\",\"none\",\"googlePlaceId\",\"name\",\"latitude\",\"longitude\",\"googlePrimaryType\",\"googleTypes\",\"has\",\"hasEvery\",\"hasSome\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "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_ACABAAAABQAgAQAAAAMAIAgIAAC-AQAgHAAAvwEAIB0AAMIBACAeAADBAQAgHwAAwAEAIGcAAL0BACBsAAC9AQAgbQAAvQEAIA1iAACMAQAwYwAAiQEAEGQAAIwBADBlAQCNAQAhZgEAjQEAIWcBAI4BACFoAgCPAQAhaQEAjQEAIWsAAJABayJsAQCOAQAhbQAAkQEAIG5AAJIBACFvQACSAQAhAwAAAAMAIAEAAIgBADAbAACJAQAgAwAAAAMAIAEAAAQAMAIAAAUAIA1iAACMAQAwYwAAiQEAEGQAAIwBADBlAQCNAQAhZgEAjQEAIWcBAI4BACFoAgCPAQAhaQEAjQEAIWsAAJABayJsAQCOAQAhbQAAkQEAIG5AAJIBACFvQACSAQAhDggAAJQBACAeAACfAQAgHwAAnwEAIHABAAAAAXEBAAAABHIBAAAABHMBAAAAAXQBAAAAAXUBAAAAAXYBAAAAAXcBAJ4BACF-AQAAAAF_AQAAAAGAAQEAAAABDggAAJYBACAeAACdAQAgHwAAnQEAIHABAAAAAXEBAAAABXIBAAAABXMBAAAAAXQBAAAAAXUBAAAAAXYBAAAAAXcBAJwBACF-AQAAAAF_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-AQAAAAF_AQAAAAGAAQEAAAABCHBAAAAAAXFAAAAABHJAAAAABHNAAAAAAXRAAAAAAXVAAAAAAXZAAAAAAXdAAJUBACEDjAEAAAkAII0BAAAJACCOAQAACQAgA4wBAAANACCNAQAADQAgjgEAAA0AIAOMAQAAAwAgjQEAAAMAII4BAAADACAMYgAArAEAMGMAACsAEGQAAKwBADBlAQCNAQAhbkAAkgEAIW9AAJIBACGPAQEAjQEAIZABAQCNAQAhkQEIAK0BACGSAQgArQEAIZMBAQCOAQAhlAEAAK4BACANCAAAlAEAIBwAAJsBACAdAACbAQAgHgAAmwEAIB8AAJsBACBwCAAAAAFxCAAAAARyCAAAAARzCAAAAAF0CAAAAAF1CAAAAAF2CAAAAAF3CACvAQAhBHABAAAABZUBAQAAAAGWAQEAAAAElwEBAAAABA0IAACUAQAgHAAAmwEAIB0AAJsBACAeAACbAQAgHwAAmwEAIHAIAAAAAXEIAAAABHIIAAAABHMIAAAAAXQIAAAAAXUIAAAAAXYIAAAAAXcIAK8BACENCQAAqwEAIGIAALABADBjAAAYABBkAACwAQAwZQEAsQEAIW5AAKgBACFvQACoAQAhjwEBALEBACGQAQEAsQEAIZEBCACyAQAhkgEIALIBACGTAQEApwEAIZQBAACuAQAgC3ABAAAAAXEBAAAABHIBAAAABHMBAAAAAXQBAAAAAXUBAAAAAXYBAAAAAXcBAJ8BACF-AQAAAAF_AQAAAAGAAQEAAAABCHAIAAAAAXEIAAAABHIIAAAABHMIAAAAAXQIAAAAAXUIAAAAAXYIAAAAAXcIAJsBACEOBAAAtQEAIGIAALMBADBjAAANABBkAACzAQAwZQEAsQEAIWcBAKcBACFrAQCxAQAhbkAAqAEAIW9AAKgBACGBAQEAsQEAIYIBAQCnAQAhgwEBAKcBACGEAQIAtAEAIYUBQACoAQAhCHACAAAAAXECAAAABXICAAAABXMCAAAAAXQCAAAAAXUCAAAAAXYCAAAAAXcCAJYBACERBQAAqQEAIAYAAKoBACAHAACrAQAgYgAApgEAMGMAAAcAEGQAAKYBADBlAQCxAQAhbkAAqAEAIW9AAKgBACGGAQEAsQEAIYcBAQCnAQAhiAEBAKcBACGJAQEApwEAIYoBAQCnAQAhiwEBAKcBACGYAQAABwAgmQEAAAcAIAkEAAC3AQAgYgAAtgEAMGMAAAkAEGQAALYBADBlAQCxAQAhZwEAsQEAIW5AAKgBACGBAQEAsQEAIYUBQACoAQAhEQUAAKkBACAGAACqAQAgBwAAqwEAIGIAAKYBADBjAAAHABBkAACmAQAwZQEAsQEAIW5AAKgBACFvQACoAQAhhgEBALEBACGHAQEApwEAIYgBAQCnAQAhiQEBAKcBACGKAQEApwEAIYsBAQCnAQAhmAEAAAcAIJkBAAAHACAPAwAAvAEAIAQAALUBACBiAAC4AQAwYwAAAwAQZAAAuAEAMGUBALEBACFmAQCxAQAhZwEApwEAIWgCALkBACFpAQCxAQAhawAAugFrImwBAKcBACFtAAC7AQAgbkAAqAEAIW9AAKgBACEIcAIAAAABcQIAAAAEcgIAAAAEcwIAAAABdAIAAAABdQIAAAABdgIAAAABdwIAlAEAIQRwAAAAawJxAAAAawhyAAAAawh3AACZAWsiDHCAAAAAAXOAAAAAAXSAAAAAAXWAAAAAAXaAAAAAAXeAAAAAAXgBAAAAAXkBAAAAAXoBAAAAAXuAAAAAAXyAAAAAAX2AAAAAAQ8JAACrAQAgYgAAsAEAMGMAABgAEGQAALABADBlAQCxAQAhbkAAqAEAIW9AAKgBACGPAQEAsQEAIZABAQCxAQAhkQEIALIBACGSAQgAsgEAIZMBAQCnAQAhlAEAAK4BACCYAQAAGAAgmQEAABgAIAAAAAAAAAGdAQEAAAABBZ0BAgAAAAGkAQIAAAABpQECAAAAAaYBAgAAAAGnAQIAAAABAZ0BAAAAawIBnQEBAAAAAQGdAUAAAAABBRYAAK4CACAXAAC0AgAgmgEAAK8CACCbAQAAswIAIKABAAABACAHFgAArAIAIBcAALECACCaAQAArQIAIJsBAACwAgAgngEAAAcAIJ8BAAAHACCgAQAALgAgAxYAAK4CACCaAQAArwIAIKABAAABACADFgAArAIAIJoBAACtAgAgoAEAAC4AIAAAAAAABZ0BAgAAAAGkAQIAAAABpQECAAAAAaYBAgAAAAGnAQIAAAABBxYAAKcCACAXAACqAgAgmgEAAKgCACCbAQAAqQIAIJ4BAAAHACCfAQAABwAgoAEAAC4AIAMWAACnAgAgmgEAAKgCACCgAQAALgAgAAAABRYAAKICACAXAAClAgAgmgEAAKMCACCbAQAApAIAIKABAAAuACADFgAAogIAIJoBAACjAgAgoAEAAC4AIAAAAAsWAAD3AQAwFwAA_AEAMJoBAAD4AQAwmwEAAPkBADCcAQAA-gEAIJ0BAAD7AQAwngEAAPsBADCfAQAA-wEAMKABAAD7AQAwoQEAAP0BADCiAQAA_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_AQAgDwAAgAIAIAhiAAD-AQAwYwAA_wEAEGQAAP4BADBlAQCxAQAhZwEAsQEAIW5AAKgBACGBAQEAsQEAIYUBQACoAQAhCGIAAP4BADBjAAD_AQAQZAAA_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-VgQ_VwhAWhtBWx9CXAVDXQVEXgVFXwVGYAVHYgVIZAhJZSBKaAVLaghMayFNbQVObgVPbwhQciJRcyhSdAJTdQJUdgJVdwJWeAJXegJYfAhZfSlagAECW4IBCFyDASpdhQECXoYBAl-HAQhgigErYYsBMQ" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"place\",\"user\",\"sessions\",\"loginRequests\",\"voiceExperiences\",\"_count\",\"experiences\",\"Place.findUnique\",\"Place.findUniqueOrThrow\",\"Place.findFirst\",\"Place.findFirstOrThrow\",\"Place.findMany\",\"data\",\"Place.createOne\",\"Place.createMany\",\"Place.createManyAndReturn\",\"Place.updateOne\",\"Place.updateMany\",\"Place.updateManyAndReturn\",\"create\",\"update\",\"Place.upsertOne\",\"Place.deleteOne\",\"Place.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Place.groupBy\",\"Place.aggregate\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserSession.findUnique\",\"UserSession.findUniqueOrThrow\",\"UserSession.findFirst\",\"UserSession.findFirstOrThrow\",\"UserSession.findMany\",\"UserSession.createOne\",\"UserSession.createMany\",\"UserSession.createManyAndReturn\",\"UserSession.updateOne\",\"UserSession.updateMany\",\"UserSession.updateManyAndReturn\",\"UserSession.upsertOne\",\"UserSession.deleteOne\",\"UserSession.deleteMany\",\"UserSession.groupBy\",\"UserSession.aggregate\",\"TelegramLoginRequest.findUnique\",\"TelegramLoginRequest.findUniqueOrThrow\",\"TelegramLoginRequest.findFirst\",\"TelegramLoginRequest.findFirstOrThrow\",\"TelegramLoginRequest.findMany\",\"TelegramLoginRequest.createOne\",\"TelegramLoginRequest.createMany\",\"TelegramLoginRequest.createManyAndReturn\",\"TelegramLoginRequest.updateOne\",\"TelegramLoginRequest.updateMany\",\"TelegramLoginRequest.updateManyAndReturn\",\"TelegramLoginRequest.upsertOne\",\"TelegramLoginRequest.deleteOne\",\"TelegramLoginRequest.deleteMany\",\"TelegramLoginRequest.groupBy\",\"TelegramLoginRequest.aggregate\",\"VoiceExperience.findUnique\",\"VoiceExperience.findUniqueOrThrow\",\"VoiceExperience.findFirst\",\"VoiceExperience.findFirstOrThrow\",\"VoiceExperience.findMany\",\"VoiceExperience.createOne\",\"VoiceExperience.createMany\",\"VoiceExperience.createManyAndReturn\",\"VoiceExperience.updateOne\",\"VoiceExperience.updateMany\",\"VoiceExperience.updateManyAndReturn\",\"VoiceExperience.upsertOne\",\"VoiceExperience.deleteOne\",\"VoiceExperience.deleteMany\",\"VoiceExperience.groupBy\",\"VoiceExperience.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"placeId\",\"userId\",\"durationSeconds\",\"audioObjectKey\",\"audioContentBase64\",\"audioMimeType\",\"audioAccessToken\",\"VoiceExperienceStatus\",\"status\",\"transcript\",\"analysis\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"tokenHash\",\"sessionToken\",\"telegramChatId\",\"telegramMessageId\",\"expiresAt\",\"telegramId\",\"username\",\"firstName\",\"lastName\",\"photoUrl\",\"languageCode\",\"isAdmin\",\"every\",\"some\",\"none\",\"googlePlaceId\",\"name\",\"latitude\",\"longitude\",\"googlePrimaryType\",\"googleTypes\",\"has\",\"hasEvery\",\"hasSome\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "ugIxUA0JAACvAQAgYgAAtAEAMGMAABgAEGQAALQBADBlAQAAAAFxQACsAQAhckAArAEAIZMBAQAAAAGUAQEAtQEAIZUBCAC2AQAhlgEIALYBACGXAQEAqgEAIZgBAACyAQAgAQAAAAEAIBIDAADAAQAgBAAAuQEAIGIAALwBADBjAAADABBkAAC8AQAwZQEAtQEAIWYBALUBACFnAQCqAQAhaAIAvQEAIWkBALUBACFqAQCqAQAhawEAqgEAIWwBAKoBACFuAAC-AW4ibwEAqgEAIXAAAL8BACBxQACsAQAhckAArAEAIQgDAACiAgAgBAAAoQIAIGcAAMEBACBqAADBAQAgawAAwQEAIGwAAMEBACBvAADBAQAgcAAAwQEAIBIDAADAAQAgBAAAuQEAIGIAALwBADBjAAADABBkAAC8AQAwZQEAAAABZgEAtQEAIWcBAKoBACFoAgC9AQAhaQEAtQEAIWoBAKoBACFrAQCqAQAhbAEAAAABbgAAvgFuIm8BAKoBACFwAAC_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_AQAgcUAArAEAIXJAAKwBACEIcwIAAAABdAIAAAAEdQIAAAAEdgIAAAABdwIAAAABeAIAAAABeQIAAAABegIAlAEAIQRzAAAAbgJ0AAAAbgh1AAAAbgh6AACZAW4iDHOAAAAAAXaAAAAAAXeAAAAAAXiAAAAAAXmAAAAAAXqAAAAAAXsBAAAAAXwBAAAAAX0BAAAAAX6AAAAAAX-AAAAAAYABgAAAAAEPCQAArwEAIGIAALQBADBjAAAYABBkAAC0AQAwZQEAtQEAIXFAAKwBACFyQACsAQAhkwEBALUBACGUAQEAtQEAIZUBCAC2AQAhlgEIALYBACGXAQEAqgEAIZgBAACyAQAgnAEAABgAIJ0BAAAYACAAAAAAAAABoQEBAAAAAQWhAQIAAAABqAECAAAAAakBAgAAAAGqAQIAAAABqwECAAAAAQGhAQEAAAABAaEBAAAAbgIBoQFAAAAAAQUWAACzAgAgFwAAuQIAIJ4BAAC0AgAgnwEAALgCACCkAQAAAQAgBxYAALECACAXAAC2AgAgngEAALICACCfAQAAtQIAIKIBAAAHACCjAQAABwAgpAEAAC4AIAMWAACzAgAgngEAALQCACCkAQAAAQAgAxYAALECACCeAQAAsgIAIKQBAAAuACAAAAAAAAWhAQIAAAABqAECAAAAAakBAgAAAAGqAQIAAAABqwECAAAAAQcWAACsAgAgFwAArwIAIJ4BAACtAgAgnwEAAK4CACCiAQAABwAgowEAAAcAIKQBAAAuACADFgAArAIAIJ4BAACtAgAgpAEAAC4AIAAAAAUWAACnAgAgFwAAqgIAIJ4BAACoAgAgnwEAAKkCACCkAQAALgAgAxYAAKcCACCeAQAAqAIAIKQBAAAuACAAAAABoQEgAAAAAQsWAAD8AQAwFwAAgQIAMJ4BAAD9AQAwnwEAAP4BADCgAQAA_wEAIKEBAACAAgAwogEAAIACADCjAQAAgAIAMKQBAACAAgAwpQEAAIICADCmAQAAgwIAMAsWAADwAQAwFwAA9QEAMJ4BAADxAQAwnwEAAPIBADCgAQAA8wEAIKEBAAD0AQAwogEAAPQBADCjAQAA9AEAMKQBAAD0AQAwpQEAAPYBADCmAQAA9wEAMAsWAADkAQAwFwAA6QEAMJ4BAADlAQAwnwEAAOYBADCgAQAA5wEAIKEBAADoAQAwogEAAOgBADCjAQAA6AEAMKQBAADoAQAwpQEAAOoBADCmAQAA6wEAMA0DAADOAQAgZQEAAAABZgEAAAABaAIAAAABaQEAAAABagEAAAABawEAAAABbAEAAAABbgAAAG4CbwEAAAABcIAAAAABcUAAAAABckAAAAABAgAAAAUAIBYAAO8BACADAAAABQAgFgAA7wEAIBcAAO4BACABDwAApgIAMBIDAADAAQAgBAAAuQEAIGIAALwBADBjAAADABBkAAC8AQAwZQEAAAABZgEAtQEAIWcBAKoBACFoAgC9AQAhaQEAtQEAIWoBAKoBACFrAQCqAQAhbAEAAAABbgAAvgFuIm8BAKoBACFwAAC_AQAgcUAArAEAIXJAAKwBACECAAAABQAgDwAA7gEAIAIAAADsAQAgDwAA7QEAIBBiAADrAQAwYwAA7AEAEGQAAOsBADBlAQC1AQAhZgEAtQEAIWcBAKoBACFoAgC9AQAhaQEAtQEAIWoBAKoBACFrAQCqAQAhbAEAqgEAIW4AAL4BbiJvAQCqAQAhcAAAvwEAIHFAAKwBACFyQACsAQAhEGIAAOsBADBjAADsAQAQZAAA6wEAMGUBALUBACFmAQC1AQAhZwEAqgEAIWgCAL0BACFpAQC1AQAhagEAqgEAIWsBAKoBACFsAQCqAQAhbgAAvgFuIm8BAKoBACFwAAC_AQAgcUAArAEAIXJAAKwBACEMZQEAxwEAIWYBAMcBACFoAgDIAQAhaQEAxwEAIWoBAMkBACFrAQDJAQAhbAEAyQEAIW4AAMoBbiJvAQDJAQAhcIAAAAABcUAAywEAIXJAAMsBACENAwAAzAEAIGUBAMcBACFmAQDHAQAhaAIAyAEAIWkBAMcBACFqAQDJAQAhawEAyQEAIWwBAMkBACFuAADKAW4ibwEAyQEAIXCAAAAAAXFAAMsBACFyQADLAQAhDQMAAM4BACBlAQAAAAFmAQAAAAFoAgAAAAFpAQAAAAFqAQAAAAFrAQAAAAFsAQAAAAFuAAAAbgJvAQAAAAFwgAAAAAFxQAAAAAFyQAAAAAEJZQEAAAABbgEAAAABcUAAAAABckAAAAABhAEBAAAAAYUBAQAAAAGGAQEAAAABhwECAAAAAYgBQAAAAAECAAAADwAgFgAA-wEAIAMAAAAPACAWAAD7AQAgFwAA-gEAIAEPAAClAgAwDgQAALkBACBiAAC3AQAwYwAADQAQZAAAtwEAMGUBAAAAAWcBAKoBACFuAQC1AQAhcUAArAEAIXJAAKwBACGEAQEAAAABhQEBAKoBACGGAQEAqgEAIYcBAgC4AQAhiAFAAKwBACECAAAADwAgDwAA-gEAIAIAAAD4AQAgDwAA-QEAIA1iAAD3AQAwYwAA-AEAEGQAAPcBADBlAQC1AQAhZwEAqgEAIW4BALUBACFxQACsAQAhckAArAEAIYQBAQC1AQAhhQEBAKoBACGGAQEAqgEAIYcBAgC4AQAhiAFAAKwBACENYgAA9wEAMGMAAPgBABBkAAD3AQAwZQEAtQEAIWcBAKoBACFuAQC1AQAhcUAArAEAIXJAAKwBACGEAQEAtQEAIYUBAQCqAQAhhgEBAKoBACGHAQIAuAEAIYgBQACsAQAhCWUBAMcBACFuAQDHAQAhcUAAywEAIXJAAMsBACGEAQEAxwEAIYUBAQDJAQAhhgEBAMkBACGHAQIA1QEAIYgBQADLAQAhCWUBAMcBACFuAQDHAQAhcUAAywEAIXJAAMsBACGEAQEAxwEAIYUBAQDJAQAhhgEBAMkBACGHAQIA1QEAIYgBQADLAQAhCWUBAAAAAW4BAAAAAXFAAAAAAXJAAAAAAYQBAQAAAAGFAQEAAAABhgEBAAAAAYcBAgAAAAGIAUAAAAABBGUBAAAAAXFAAAAAAYQBAQAAAAGIAUAAAAABAgAAAAsAIBYAAIcCACADAAAACwAgFgAAhwIAIBcAAIYCACABDwAApAIAMAkEAAC7AQAgYgAAugEAMGMAAAkAEGQAALoBADBlAQAAAAFnAQC1AQAhcUAArAEAIYQBAQAAAAGIAUAArAEAIQIAAAALACAPAACGAgAgAgAAAIQCACAPAACFAgAgCGIAAIMCADBjAACEAgAQZAAAgwIAMGUBALUBACFnAQC1AQAhcUAArAEAIYQBAQC1AQAhiAFAAKwBACEIYgAAgwIAMGMAAIQCABBkAACDAgAwZQEAtQEAIWcBALUBACFxQACsAQAhhAEBALUBACGIAUAArAEAIQRlAQDHAQAhcUAAywEAIYQBAQDHAQAhiAFAAMsBACEEZQEAxwEAIXFAAMsBACGEAQEAxwEAIYgBQADLAQAhBGUBAAAAAXFAAAAAAYQBAQAAAAGIAUAAAAABBBYAAPwBADCeAQAA_QEAMKABAAD_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-Ey0_Ay5AAy9BCDBEFDFFGDJGBDNHBDRIBDVJBDZKBDdMBDhOCDlPGTpRBDtTCDxUGj1VBD5WBD9XCEBaG0FbH0JcBUNdBUReBUVfBUZgBUdiBUhkCEllIEpoBUtqCExrIU1tBU5uBU9vCFByIlFzKFJ0AlN1AlR2AlV3AlZ4Ald6Alh8CFl9KVqAAQJbggEIXIMBKl2FAQJehgECX4cBCGCKASthiwEx" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/src/generated/prisma/package.json b/src/generated/prisma/package.json index e33063e..e0f1f2b 100644 --- a/src/generated/prisma/package.json +++ b/src/generated/prisma/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-410efc9d12118d43a80a319e7db6d1bb75111f120bc5d6445b1056062f5567cd", + "name": "prisma-client-af7d1a24a80c81a94e157e22f4f12e91cca6099374f7a2346452663b0168688a", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/src/generated/prisma/schema.prisma b/src/generated/prisma/schema.prisma index f912884..610094f 100644 --- a/src/generated/prisma/schema.prisma +++ b/src/generated/prisma/schema.prisma @@ -37,6 +37,7 @@ model User { lastName String? photoUrl String? languageCode String? + isAdmin Boolean @default(false) sessions UserSession[] loginRequests TelegramLoginRequest[] voiceExperiences VoiceExperience[] @@ -68,16 +69,19 @@ model TelegramLoginRequest { } model VoiceExperience { - id String @id @default(cuid()) - placeId String - place Place @relation(fields: [placeId], references: [id]) - userId String? - user User? @relation(fields: [userId], references: [id]) - durationSeconds Int - audioObjectKey String - status VoiceExperienceStatus @default(UPLOADED) - transcript String? - analysis Json? - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + id String @id @default(cuid()) + placeId String + place Place @relation(fields: [placeId], references: [id]) + userId String? + user User? @relation(fields: [userId], references: [id]) + durationSeconds Int + audioObjectKey String + audioContentBase64 String? + audioMimeType String? + audioAccessToken String? @unique + status VoiceExperienceStatus @default(UPLOADED) + transcript String? + analysis Json? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt } diff --git a/src/graphql/schema.ts b/src/graphql/schema.ts index 6800cb6..4471beb 100644 --- a/src/graphql/schema.ts +++ b/src/graphql/schema.ts @@ -2,6 +2,7 @@ import { GraphQLJSONObject } from './scalars.js'; import { getOrCreateTelegramLoginUser, getOrCreateTelegramUser, + requireAdminTelegramUser, requireTelegramUser, type TelegramLoginData, } from '../auth/telegram.js'; @@ -53,6 +54,7 @@ export const schema = /* GraphQL */ ` lastName: String photoUrl: String languageCode: String + isAdmin: Boolean! } type VoiceExperience { @@ -74,6 +76,8 @@ export const schema = /* GraphQL */ ` longitude: Float! durationSeconds: Int! audioObjectKey: String! + audioContentBase64: String! + audioMimeType: String! } input NearbyPlacesInput { @@ -152,7 +156,7 @@ export const resolvers = { }, voiceExperiences: async (_: unknown, __: unknown, context: unknown) => { const graphqlContext = context as GraphqlContext; - await requireTelegramUser(graphqlContext); + await requireAdminTelegramUser(graphqlContext); return listVoiceExperiences(); }, }, diff --git a/src/graphql/voice-experiences.ts b/src/graphql/voice-experiences.ts index 5113d18..29b524e 100644 --- a/src/graphql/voice-experiences.ts +++ b/src/graphql/voice-experiences.ts @@ -1,3 +1,5 @@ +import { randomBytes } from 'node:crypto'; + import { enqueueVoiceExperience } from '../hatchet/enqueue-voice-experience.js'; import { prisma } from '../prisma.js'; @@ -10,8 +12,14 @@ export type CreateVoiceExperienceInput = { longitude: number; durationSeconds: number; audioObjectKey: string; + audioContentBase64: string; + audioMimeType: string; }; +function randomAudioAccessToken() { + return randomBytes(32).toString('base64url'); +} + export async function createVoiceExperience( input: CreateVoiceExperienceInput, userId: string, @@ -27,6 +35,12 @@ export async function createVoiceExperience( if (googleName === '') { throw new Error('Google place name is required.'); } + if (input.audioContentBase64.trim() === '') { + throw new Error('Voice experience audio is required.'); + } + if (input.audioMimeType.trim() === '') { + throw new Error('Voice experience audio MIME type is required.'); + } const place = await prisma.place.upsert({ where: { googlePlaceId }, @@ -49,6 +63,9 @@ export async function createVoiceExperience( userId, durationSeconds: input.durationSeconds, audioObjectKey: input.audioObjectKey, + audioContentBase64: input.audioContentBase64, + audioMimeType: input.audioMimeType, + audioAccessToken: randomAudioAccessToken(), status: 'UPLOADED', }, include: { place: true, user: true }, diff --git a/src/server.ts b/src/server.ts index f3b4b29..fcb4ff5 100644 --- a/src/server.ts +++ b/src/server.ts @@ -9,7 +9,10 @@ import { handleTelegramBotWebhook, } from './auth/telegram-bot-login.js'; -const app = Fastify({ logger: true }); +const app = Fastify({ + logger: true, + bodyLimit: 25 * 1024 * 1024, +}); app.register(mercurius, { schema, @@ -46,6 +49,36 @@ app.get('/telegram/photo/:fileId', async (request, reply) => { return reply.send(photo.bytes); }); +app.get('/audio/voice-experiences/:experienceId', async (request, reply) => { + const params = request.params as { experienceId: string }; + const query = request.query as { token?: string }; + if (!query.token) { + return reply.code(401).send({ error: 'Audio token is required.' }); + } + + const experience = await prisma.voiceExperience.findUnique({ + where: { id: params.experienceId }, + select: { + audioAccessToken: true, + audioContentBase64: true, + audioMimeType: true, + }, + }); + + if ( + !experience || + experience.audioAccessToken !== query.token || + !experience.audioContentBase64 || + !experience.audioMimeType + ) { + return reply.code(404).send({ error: 'Audio was not found.' }); + } + + reply.header('content-type', experience.audioMimeType); + reply.header('cache-control', 'no-store'); + return reply.send(Buffer.from(experience.audioContentBase64, 'base64')); +}); + app.addHook('onClose', async () => { await prisma.$disconnect(); });