From 53a7cb7cc88705f2a9800ff8127c355ff9047187 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 Deepgram and OpenRouter voice processing --- .gitea/workflows/build-and-deploy.yml | 13 +- prisma/schema.prisma | 46 ++- src/config.ts | 7 + src/generated/prisma/edge.js | 14 +- src/generated/prisma/index-browser.js | 6 + src/generated/prisma/index.d.ts | 481 +++++++++++++++++++----- src/generated/prisma/index.js | 14 +- src/generated/prisma/package.json | 2 +- src/generated/prisma/schema.prisma | 46 ++- src/jobs/analyze-voice-experience.ts | 120 +++++- src/jobs/transcribe-voice-experience.ts | 85 ++++- 11 files changed, 663 insertions(+), 171 deletions(-) diff --git a/.gitea/workflows/build-and-deploy.yml b/.gitea/workflows/build-and-deploy.yml index 512bba6..14fcb4d 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: worker IMAGE_SHA: gitea.dsrptlab.com/mapflow/worker:${{ 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 --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/schema.prisma b/prisma/schema.prisma index ffa1d57..f92c167 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -17,14 +17,16 @@ enum VoiceExperienceStatus { } model Place { - id String @id @default(cuid()) - googlePlaceId String @unique - name String - latitude Float - longitude Float - experiences VoiceExperience[] - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + 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 } model User { @@ -35,22 +37,26 @@ model User { lastName String? photoUrl String? languageCode String? + isAdmin Boolean @default(false) voiceExperiences VoiceExperience[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } 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/config.ts b/src/config.ts index 56e3f35..798cb22 100644 --- a/src/config.ts +++ b/src/config.ts @@ -8,4 +8,11 @@ export const config = { databaseUrl: process.env.DATABASE_URL ?? '', workerName: process.env.HATCHET_WORKER_NAME ?? 'mapflow-hatchet-worker', workerSlots: Number.parseInt(process.env.HATCHET_WORKER_SLOTS ?? '4', 10), + publicApiUrl: process.env.PUBLIC_API_URL ?? 'https://api.map.craftee.vn', + deepgramApiKey: process.env.DEEPGRAM_API_KEY ?? '', + deepgramModel: process.env.DEEPGRAM_MODEL ?? 'nova-3', + deepgramLanguage: process.env.DEEPGRAM_LANGUAGE ?? 'ru', + openRouterApiKey: process.env.OPENROUTER_API_KEY ?? '', + openRouterModel: + process.env.OPENROUTER_MODEL ?? 'minimax/minimax-m2.5:free', }; diff --git a/src/generated/prisma/edge.js b/src/generated/prisma/edge.js index 1435c1f..e3cce58 100644 --- a/src/generated/prisma/edge.js +++ b/src/generated/prisma/edge.js @@ -98,6 +98,8 @@ exports.Prisma.PlaceScalarFieldEnum = { name: 'name', latitude: 'latitude', longitude: 'longitude', + googlePrimaryType: 'googlePrimaryType', + googleTypes: 'googleTypes', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -110,6 +112,7 @@ exports.Prisma.UserScalarFieldEnum = { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -120,6 +123,9 @@ exports.Prisma.VoiceExperienceScalarFieldEnum = { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', @@ -174,14 +180,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 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 voiceExperiences VoiceExperience[]\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 voiceExperiences VoiceExperience[]\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\":\"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\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"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\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"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\",\"voiceExperiences\",\"_count\",\"user\",\"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\",\"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\",\"telegramId\",\"username\",\"firstName\",\"lastName\",\"photoUrl\",\"languageCode\",\"every\",\"some\",\"none\",\"googlePlaceId\",\"name\",\"latitude\",\"longitude\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "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-ACFEAQB-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_ACFHAQB-ACFJAACAAUkiSgEAgQEAIUuAAAAAAUxAAIIBACFNQACCAQAhCgYAAIQBACBDAQB-ACFFAQCBAQAhRgIAfwAhRwEAfgAhSQAAgAFJIkoBAIEBACFLgAAAAAFMQACCAQAhTUAAggEAIQoGAACGAQAgQwEAAAABRQEAAAABRgIAAAABRwEAAAABSQAAAEkCSgEAAAABS4AAAAABTEAAAAABTUAAAAABBBQAAKABADBuAAChAQAwcAAAowEAIHQAAI8BADABBwAAmAEAIAYEAACYAQAgYAAAeAAgYQAAeAAgYgAAeAAgYwAAeAAgZAAAeAAgCUMBAAAAAUUBAAAAAUYCAAAAAUcBAAAAAUkAAABJAkoBAAAAAUuAAAAAAUxAAAAAAU1AAAAAAQlDAQAAAAFEAQAAAAFGAgAAAAFHAQAAAAFJAAAASQJKAQAAAAFLgAAAAAFMQAAAAAFNQAAAAAEJQwEAAAABTEAAAAABTUAAAAABXwEAAAABYAEAAAABYQEAAAABYgEAAAABYwEAAAABZAEAAAABAgAAACMAIBQAAK4BACAHQwEAAAABTEAAAAABTUAAAAABaAEAAAABaQEAAAABaggAAAABawgAAAABAgAAAAEAIBQAALABACADAAAABwAgFAAArgEAIBUAALQBACALAAAABwAgDQAAtAEAIEMBAH4AIUxAAIIBACFNQACCAQAhXwEAfgAhYAEAgQEAIWEBAIEBACFiAQCBAQAhYwEAgQEAIWQBAIEBACEJQwEAfgAhTEAAggEAIU1AAIIBACFfAQB-ACFgAQCBAQAhYQEAgQEAIWIBAIEBACFjAQCBAQAhZAEAgQEAIQMAAAANACAUAACwAQAgFQAAtwEAIAkAAAANACANAAC3AQAgQwEAfgAhTEAAggEAIU1AAIIBACFoAQB-ACFpAQB-ACFqCACeAQAhawgAngEAIQdDAQB-ACFMQACCAQAhTUAAggEAIWgBAH4AIWkBAH4AIWoIAJ4BACFrCACeAQAhAgUABQcGAgIDAAEGCAMCBAkCBQAEAQQKAAEHCwAAAAAFBQAKGgALGwAMHAANHQAOAAAAAAAFBQAKGgALGwAMHAANHQAOAAADBQATHAAUHQAVAAAAAwUAExwAFB0AFQIDAAEGRQMCAwABBksDBQUAGhoAGxsAHBwAHR0AHgAAAAAABQUAGhoAGxsAHBwAHR0AHggCAQkMAQoPAQsQAQwRAQ4TAQ8VBhAWBxEYARIaBhMbCBYcARcdARgeBh4hCR8iDyAkAyElAyInAyMoAyQpAyUrAyYtBicuECgwAykyBiozESs0Ayw1Ay02Bi45Ei86FjA7AjE8AjI9AjM-AjQ_AjVBAjZDBjdEFzhHAjlJBjpKGDtMAjxNAj1OBj5RGT9SHw" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"place\",\"voiceExperiences\",\"_count\",\"user\",\"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\",\"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\",\"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: "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ACFPQABZACFQQABZACFiAQBUACFjAQBVACFkAQBVACFlAQBVACFmAQBVACFnAQBVACFoIABoACEDAAAABwAgAQAANwAwGQAAOAAgAwAAAAcAIAEAACYAMAIAACMAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgDwMAAIoBACAGAACLAQAgQwEAAAABRAEAAAABRQEAAAABRgIAAAABRwEAAAABSAEAAAABSQEAAAABSgEAAAABTAAAAEwCTQEAAAABToAAAAABT0AAAAABUEAAAAABAQ0AAEAAIA1DAQAAAAFEAQAAAAFFAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAEBDQAAQgAwAQ0AAEIAMAEAAAAHACAPAwAAiAEAIAYAAIkBACBDAQCDAQAhRAEAgwEAIUUBAIUBACFGAgCEAQAhRwEAgwEAIUgBAIUBACFJAQCFAQAhSgEAhQEAIUwAAIYBTCJNAQCFAQAhToAAAAABT0AAhwEAIVBAAIcBACECAAAABQAgDQAARgAgDUMBAIMBACFEAQCDAQAhRQEAhQEAIUYCAIQBACFHAQCDAQAhSAEAhQEAIUkBAIUBACFKAQCFAQAhTAAAhgFMIk0BAIUBACFOgAAAAAFPQACHAQAhUEAAhwEAIQIAAAADACANAABIACACAAAAAwAgDQAASAAgAQAAAAcAIAMAAAAFACAUAABAACAVAABGACABAAAABQAgAQAAAAMAIAsFAAB-ACAaAAB_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_AACYAQAwDQYAAIsBACBDAQAAAAFFAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAECAAAABQAgFAAArwEAIAMAAAAFACAUAACvAQAgFQAArgEAIAENAAC0AQAwAgAAAAUAIA0AAK4BACACAAAAmQEAIA0AAK0BACAMQwEAgwEAIUUBAIUBACFGAgCEAQAhRwEAgwEAIUgBAIUBACFJAQCFAQAhSgEAhQEAIUwAAIYBTCJNAQCFAQAhToAAAAABT0AAhwEAIVBAAIcBACENBgAAiQEAIEMBAIMBACFFAQCFAQAhRgIAhAEAIUcBAIMBACFIAQCFAQAhSQEAhQEAIUoBAIUBACFMAACGAUwiTQEAhQEAIU6AAAAAAU9AAIcBACFQQACHAQAhDQYAAIsBACBDAQAAAAFFAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAEBegEAAAAEBBQAAKcBADB3AACoAQAweQAAqgEAIH0AAJUBADACBwAAngEAIHAAAH0AIAYEAACeAQAgYwAAfQAgZAAAfQAgZQAAfQAgZgAAfQAgZwAAfQAgDEMBAAAAAUUBAAAAAUYCAAAAAUcBAAAAAUgBAAAAAUkBAAAAAUoBAAAAAUwAAABMAk0BAAAAAU6AAAAAAU9AAAAAAVBAAAAAAQxDAQAAAAFEAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAEKQwEAAAABT0AAAAABUEAAAAABYgEAAAABYwEAAAABZAEAAAABZQEAAAABZgEAAAABZwEAAAABaCAAAAABAgAAACMAIBQAALYBACAJQwEAAAABT0AAAAABUEAAAAABbAEAAAABbQEAAAABbggAAAABbwgAAAABcAEAAAABcQAAsAEAIAIAAAABACAUAAC4AQAgAwAAAAcAIBQAALYBACAVAAC8AQAgDAAAAAcAIA0AALwBACBDAQCDAQAhT0AAhwEAIVBAAIcBACFiAQCDAQAhYwEAhQEAIWQBAIUBACFlAQCFAQAhZgEAhQEAIWcBAIUBACFoIACPAQAhCkMBAIMBACFPQACHAQAhUEAAhwEAIWIBAIMBACFjAQCFAQAhZAEAhQEAIWUBAIUBACFmAQCFAQAhZwEAhQEAIWggAI8BACEDAAAADQAgFAAAuAEAIBUAAL8BACALAAAADQAgDQAAvwEAIEMBAIMBACFPQACHAQAhUEAAhwEAIWwBAIMBACFtAQCDAQAhbggApAEAIW8IAKQBACFwAQCFAQAhcQAApQEAIAlDAQCDAQAhT0AAhwEAIVBAAIcBACFsAQCDAQAhbQEAgwEAIW4IAKQBACFvCACkAQAhcAEAhQEAIXEAAKUBACACBQAFBwYCAgMAAQYIAwIECQIFAAQBBAoAAQcLAAAAAAUFAAoaAAsbAAwcAA0dAA4AAAAAAAUFAAoaAAsbAAwcAA0dAA4AAAMFABMcABQdABUAAAADBQATHAAUHQAVAgMAAQZFAwIDAAEGSwMFBQAaGgAbGwAcHAAdHQAeAAAAAAAFBQAaGgAbGwAcHAAdHQAeCAIBCQwBCg8BCxABDBEBDhMBDxUGEBYHERgBEhoGExsIFhwBFx0BGB4GHiEJHyIPICQDISUDIicDIygDJCkDJSsDJi0GJy4QKDADKTIGKjMRKzQDLDUDLTYGLjkSLzoWMDsCMTwCMj0CMz4CND8CNUECNkMGN0QXOEcCOUkGOkoYO0wCPE0CPU4GPlEZP1If" } 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 a96b852..198c713 100644 --- a/src/generated/prisma/index-browser.js +++ b/src/generated/prisma/index-browser.js @@ -126,6 +126,8 @@ exports.Prisma.PlaceScalarFieldEnum = { name: 'name', latitude: 'latitude', longitude: 'longitude', + googlePrimaryType: 'googlePrimaryType', + googleTypes: 'googleTypes', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -138,6 +140,7 @@ exports.Prisma.UserScalarFieldEnum = { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -148,6 +151,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 07ac4df..2f17cd9 100644 --- a/src/generated/prisma/index.d.ts +++ b/src/generated/prisma/index.d.ts @@ -1158,6 +1158,7 @@ export namespace Prisma { name: string | null latitude: number | null longitude: number | null + googlePrimaryType: string | null createdAt: Date | null updatedAt: Date | null } @@ -1168,6 +1169,7 @@ export namespace Prisma { name: string | null latitude: number | null longitude: number | null + googlePrimaryType: string | null createdAt: Date | null updatedAt: Date | null } @@ -1178,6 +1180,8 @@ export namespace Prisma { name: number latitude: number longitude: number + googlePrimaryType: number + googleTypes: number createdAt: number updatedAt: number _all: number @@ -1200,6 +1204,7 @@ export namespace Prisma { name?: true latitude?: true longitude?: true + googlePrimaryType?: true createdAt?: true updatedAt?: true } @@ -1210,6 +1215,7 @@ export namespace Prisma { name?: true latitude?: true longitude?: true + googlePrimaryType?: true createdAt?: true updatedAt?: true } @@ -1220,6 +1226,8 @@ export namespace Prisma { name?: true latitude?: true longitude?: true + googlePrimaryType?: true + googleTypes?: true createdAt?: true updatedAt?: true _all?: true @@ -1317,6 +1325,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType: string | null + googleTypes: string[] createdAt: Date updatedAt: Date _count: PlaceCountAggregateOutputType | null @@ -1346,6 +1356,8 @@ export namespace Prisma { name?: boolean latitude?: boolean longitude?: boolean + googlePrimaryType?: boolean + googleTypes?: boolean createdAt?: boolean updatedAt?: boolean experiences?: boolean | Place$experiencesArgs @@ -1358,6 +1370,8 @@ export namespace Prisma { name?: boolean latitude?: boolean longitude?: boolean + googlePrimaryType?: boolean + googleTypes?: boolean createdAt?: boolean updatedAt?: boolean }, ExtArgs["result"]["place"]> @@ -1368,6 +1382,8 @@ export namespace Prisma { name?: boolean latitude?: boolean longitude?: boolean + googlePrimaryType?: boolean + googleTypes?: boolean createdAt?: boolean updatedAt?: boolean }, ExtArgs["result"]["place"]> @@ -1378,11 +1394,13 @@ export namespace Prisma { name?: boolean latitude?: boolean longitude?: boolean + googlePrimaryType?: boolean + googleTypes?: boolean createdAt?: boolean updatedAt?: boolean } - export type PlaceOmit = $Extensions.GetOmit<"id" | "googlePlaceId" | "name" | "latitude" | "longitude" | "createdAt" | "updatedAt", ExtArgs["result"]["place"]> + export type PlaceOmit = $Extensions.GetOmit<"id" | "googlePlaceId" | "name" | "latitude" | "longitude" | "googlePrimaryType" | "googleTypes" | "createdAt" | "updatedAt", ExtArgs["result"]["place"]> export type PlaceInclude = { experiences?: boolean | Place$experiencesArgs _count?: boolean | PlaceCountOutputTypeDefaultArgs @@ -1401,6 +1419,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType: string | null + googleTypes: string[] createdAt: Date updatedAt: Date }, ExtArgs["result"]["place"]> @@ -1832,6 +1852,8 @@ export namespace Prisma { readonly name: FieldRef<"Place", 'String'> readonly latitude: FieldRef<"Place", 'Float'> readonly longitude: FieldRef<"Place", 'Float'> + readonly googlePrimaryType: FieldRef<"Place", 'String'> + readonly googleTypes: FieldRef<"Place", 'String[]'> readonly createdAt: FieldRef<"Place", 'DateTime'> readonly updatedAt: FieldRef<"Place", 'DateTime'> } @@ -2287,6 +2309,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean | null createdAt: Date | null updatedAt: Date | null } @@ -2299,6 +2322,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean | null createdAt: Date | null updatedAt: Date | null } @@ -2311,6 +2335,7 @@ export namespace Prisma { lastName: number photoUrl: number languageCode: number + isAdmin: number createdAt: number updatedAt: number _all: number @@ -2325,6 +2350,7 @@ export namespace Prisma { lastName?: true photoUrl?: true languageCode?: true + isAdmin?: true createdAt?: true updatedAt?: true } @@ -2337,6 +2363,7 @@ export namespace Prisma { lastName?: true photoUrl?: true languageCode?: true + isAdmin?: true createdAt?: true updatedAt?: true } @@ -2349,6 +2376,7 @@ export namespace Prisma { lastName?: true photoUrl?: true languageCode?: true + isAdmin?: true createdAt?: true updatedAt?: true _all?: true @@ -2434,6 +2462,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean createdAt: Date updatedAt: Date _count: UserCountAggregateOutputType | null @@ -2463,6 +2492,7 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean voiceExperiences?: boolean | User$voiceExperiencesArgs @@ -2477,6 +2507,7 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean }, ExtArgs["result"]["user"]> @@ -2489,6 +2520,7 @@ export namespace Prisma { lastName?: boolean photoUrl?: boolean languageCode?: boolean + isAdmin?: boolean createdAt?: boolean updatedAt?: boolean }, ExtArgs["result"]["user"]> @@ -2501,11 +2533,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 = { voiceExperiences?: boolean | User$voiceExperiencesArgs _count?: boolean | UserCountOutputTypeDefaultArgs @@ -2526,6 +2559,7 @@ export namespace Prisma { lastName: string | null photoUrl: string | null languageCode: string | null + isAdmin: boolean createdAt: Date updatedAt: Date }, ExtArgs["result"]["user"]> @@ -2959,6 +2993,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'> } @@ -3422,6 +3457,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 @@ -3434,6 +3472,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 @@ -3446,6 +3487,9 @@ export namespace Prisma { userId: number durationSeconds: number audioObjectKey: number + audioContentBase64: number + audioMimeType: number + audioAccessToken: number status: number transcript: number analysis: number @@ -3469,6 +3513,9 @@ export namespace Prisma { userId?: true durationSeconds?: true audioObjectKey?: true + audioContentBase64?: true + audioMimeType?: true + audioAccessToken?: true status?: true transcript?: true createdAt?: true @@ -3481,6 +3528,9 @@ export namespace Prisma { userId?: true durationSeconds?: true audioObjectKey?: true + audioContentBase64?: true + audioMimeType?: true + audioAccessToken?: true status?: true transcript?: true createdAt?: true @@ -3493,6 +3543,9 @@ export namespace Prisma { userId?: true durationSeconds?: true audioObjectKey?: true + audioContentBase64?: true + audioMimeType?: true + audioAccessToken?: true status?: true transcript?: true analysis?: true @@ -3593,6 +3646,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 @@ -3625,6 +3681,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -3640,6 +3699,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -3655,6 +3717,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -3670,6 +3735,9 @@ export namespace Prisma { userId?: boolean durationSeconds?: boolean audioObjectKey?: boolean + audioContentBase64?: boolean + audioMimeType?: boolean + audioAccessToken?: boolean status?: boolean transcript?: boolean analysis?: boolean @@ -3677,7 +3745,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 @@ -3703,6 +3771,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 @@ -4138,6 +4209,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'> @@ -4601,6 +4675,8 @@ export namespace Prisma { name: 'name', latitude: 'latitude', longitude: 'longitude', + googlePrimaryType: 'googlePrimaryType', + googleTypes: 'googleTypes', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -4616,6 +4692,7 @@ export namespace Prisma { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -4629,6 +4706,9 @@ export namespace Prisma { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', @@ -4727,6 +4807,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' */ @@ -4781,6 +4868,8 @@ export namespace Prisma { name?: StringFilter<"Place"> | string latitude?: FloatFilter<"Place"> | number longitude?: FloatFilter<"Place"> | number + googlePrimaryType?: StringNullableFilter<"Place"> | string | null + googleTypes?: StringNullableListFilter<"Place"> createdAt?: DateTimeFilter<"Place"> | Date | string updatedAt?: DateTimeFilter<"Place"> | Date | string experiences?: VoiceExperienceListRelationFilter @@ -4792,6 +4881,8 @@ export namespace Prisma { name?: SortOrder latitude?: SortOrder longitude?: SortOrder + googlePrimaryType?: SortOrderInput | SortOrder + googleTypes?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder experiences?: VoiceExperienceOrderByRelationAggregateInput @@ -4806,6 +4897,8 @@ export namespace Prisma { name?: StringFilter<"Place"> | string latitude?: FloatFilter<"Place"> | number longitude?: FloatFilter<"Place"> | number + googlePrimaryType?: StringNullableFilter<"Place"> | string | null + googleTypes?: StringNullableListFilter<"Place"> createdAt?: DateTimeFilter<"Place"> | Date | string updatedAt?: DateTimeFilter<"Place"> | Date | string experiences?: VoiceExperienceListRelationFilter @@ -4817,6 +4910,8 @@ export namespace Prisma { name?: SortOrder latitude?: SortOrder longitude?: SortOrder + googlePrimaryType?: SortOrderInput | SortOrder + googleTypes?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder _count?: PlaceCountOrderByAggregateInput @@ -4835,6 +4930,8 @@ export namespace Prisma { name?: StringWithAggregatesFilter<"Place"> | string latitude?: FloatWithAggregatesFilter<"Place"> | number longitude?: FloatWithAggregatesFilter<"Place"> | number + googlePrimaryType?: StringNullableWithAggregatesFilter<"Place"> | string | null + googleTypes?: StringNullableListFilter<"Place"> createdAt?: DateTimeWithAggregatesFilter<"Place"> | Date | string updatedAt?: DateTimeWithAggregatesFilter<"Place"> | Date | string } @@ -4850,6 +4947,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 voiceExperiences?: VoiceExperienceListRelationFilter @@ -4863,6 +4961,7 @@ export namespace Prisma { lastName?: SortOrderInput | SortOrder photoUrl?: SortOrderInput | SortOrder languageCode?: SortOrderInput | SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder voiceExperiences?: VoiceExperienceOrderByRelationAggregateInput @@ -4879,6 +4978,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 voiceExperiences?: VoiceExperienceListRelationFilter @@ -4892,6 +4992,7 @@ export namespace Prisma { lastName?: SortOrderInput | SortOrder photoUrl?: SortOrderInput | SortOrder languageCode?: SortOrderInput | SortOrder + isAdmin?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder _count?: UserCountOrderByAggregateInput @@ -4910,6 +5011,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 } @@ -4923,6 +5025,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"> @@ -4938,6 +5043,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 @@ -4949,6 +5057,7 @@ export namespace Prisma { export type VoiceExperienceWhereUniqueInput = Prisma.AtLeast<{ id?: string + audioAccessToken?: string AND?: VoiceExperienceWhereInput | VoiceExperienceWhereInput[] OR?: VoiceExperienceWhereInput[] NOT?: VoiceExperienceWhereInput | VoiceExperienceWhereInput[] @@ -4956,6 +5065,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"> @@ -4963,7 +5074,7 @@ export namespace Prisma { updatedAt?: DateTimeFilter<"VoiceExperience"> | Date | string place?: XOR user?: XOR | null - }, "id"> + }, "id" | "audioAccessToken"> export type VoiceExperienceOrderByWithAggregationInput = { id?: SortOrder @@ -4971,6 +5082,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 @@ -4992,6 +5106,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"> @@ -5005,6 +5122,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType?: string | null + googleTypes?: PlaceCreategoogleTypesInput | string[] createdAt?: Date | string updatedAt?: Date | string experiences?: VoiceExperienceCreateNestedManyWithoutPlaceInput @@ -5016,6 +5135,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType?: string | null + googleTypes?: PlaceCreategoogleTypesInput | string[] createdAt?: Date | string updatedAt?: Date | string experiences?: VoiceExperienceUncheckedCreateNestedManyWithoutPlaceInput @@ -5027,6 +5148,8 @@ export namespace Prisma { name?: StringFieldUpdateOperationsInput | string latitude?: FloatFieldUpdateOperationsInput | number longitude?: FloatFieldUpdateOperationsInput | number + googlePrimaryType?: NullableStringFieldUpdateOperationsInput | string | null + googleTypes?: PlaceUpdategoogleTypesInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string experiences?: VoiceExperienceUpdateManyWithoutPlaceNestedInput @@ -5038,6 +5161,8 @@ export namespace Prisma { name?: StringFieldUpdateOperationsInput | string latitude?: FloatFieldUpdateOperationsInput | number longitude?: FloatFieldUpdateOperationsInput | number + googlePrimaryType?: NullableStringFieldUpdateOperationsInput | string | null + googleTypes?: PlaceUpdategoogleTypesInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string experiences?: VoiceExperienceUncheckedUpdateManyWithoutPlaceNestedInput @@ -5049,6 +5174,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType?: string | null + googleTypes?: PlaceCreategoogleTypesInput | string[] createdAt?: Date | string updatedAt?: Date | string } @@ -5059,6 +5186,8 @@ export namespace Prisma { name?: StringFieldUpdateOperationsInput | string latitude?: FloatFieldUpdateOperationsInput | number longitude?: FloatFieldUpdateOperationsInput | number + googlePrimaryType?: NullableStringFieldUpdateOperationsInput | string | null + googleTypes?: PlaceUpdategoogleTypesInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -5069,6 +5198,8 @@ export namespace Prisma { name?: StringFieldUpdateOperationsInput | string latitude?: FloatFieldUpdateOperationsInput | number longitude?: FloatFieldUpdateOperationsInput | number + googlePrimaryType?: NullableStringFieldUpdateOperationsInput | string | null + googleTypes?: PlaceUpdategoogleTypesInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -5081,6 +5212,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string voiceExperiences?: VoiceExperienceCreateNestedManyWithoutUserInput @@ -5094,6 +5226,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string voiceExperiences?: VoiceExperienceUncheckedCreateNestedManyWithoutUserInput @@ -5107,6 +5240,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 voiceExperiences?: VoiceExperienceUpdateManyWithoutUserNestedInput @@ -5120,6 +5254,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 voiceExperiences?: VoiceExperienceUncheckedUpdateManyWithoutUserNestedInput @@ -5133,6 +5268,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string } @@ -5145,6 +5281,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 } @@ -5157,6 +5294,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 } @@ -5165,6 +5303,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 @@ -5180,6 +5321,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 @@ -5191,6 +5335,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 @@ -5206,6 +5353,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 @@ -5219,6 +5369,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 @@ -5230,6 +5383,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 @@ -5243,6 +5399,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 @@ -5276,6 +5435,29 @@ export namespace Prisma { not?: NestedFloatFilter<$PrismaModel> | number } + export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + mode?: QueryMode + not?: NestedStringNullableFilter<$PrismaModel> | string | null + } + + export type StringNullableListFilter<$PrismaModel = never> = { + equals?: string[] | ListStringFieldRefInput<$PrismaModel> | null + has?: string | StringFieldRefInput<$PrismaModel> | null + hasEvery?: string[] | ListStringFieldRefInput<$PrismaModel> + hasSome?: string[] | ListStringFieldRefInput<$PrismaModel> + isEmpty?: boolean + } + export type DateTimeFilter<$PrismaModel = never> = { equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> @@ -5293,6 +5475,11 @@ export namespace Prisma { none?: VoiceExperienceWhereInput } + export type SortOrderInput = { + sort: SortOrder + nulls?: NullsOrder + } + export type VoiceExperienceOrderByRelationAggregateInput = { _count?: SortOrder } @@ -5303,6 +5490,8 @@ export namespace Prisma { name?: SortOrder latitude?: SortOrder longitude?: SortOrder + googlePrimaryType?: SortOrder + googleTypes?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder } @@ -5318,6 +5507,7 @@ export namespace Prisma { name?: SortOrder latitude?: SortOrder longitude?: SortOrder + googlePrimaryType?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder } @@ -5328,6 +5518,7 @@ export namespace Prisma { name?: SortOrder latitude?: SortOrder longitude?: SortOrder + googlePrimaryType?: SortOrder createdAt?: SortOrder updatedAt?: SortOrder } @@ -5371,76 +5562,6 @@ export namespace Prisma { _max?: NestedFloatFilter<$PrismaModel> } - export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedDateTimeFilter<$PrismaModel> - _max?: NestedDateTimeFilter<$PrismaModel> - } - - export type StringNullableFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> | null - in?: string[] | ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null - lt?: string | StringFieldRefInput<$PrismaModel> - lte?: string | StringFieldRefInput<$PrismaModel> - gt?: string | StringFieldRefInput<$PrismaModel> - gte?: string | StringFieldRefInput<$PrismaModel> - contains?: string | StringFieldRefInput<$PrismaModel> - startsWith?: string | StringFieldRefInput<$PrismaModel> - endsWith?: string | StringFieldRefInput<$PrismaModel> - mode?: QueryMode - not?: NestedStringNullableFilter<$PrismaModel> | string | null - } - - export type SortOrderInput = { - sort: SortOrder - nulls?: NullsOrder - } - - export type UserCountOrderByAggregateInput = { - id?: SortOrder - telegramId?: SortOrder - username?: SortOrder - firstName?: SortOrder - lastName?: SortOrder - photoUrl?: SortOrder - languageCode?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - } - - export type UserMaxOrderByAggregateInput = { - id?: SortOrder - telegramId?: SortOrder - username?: SortOrder - firstName?: SortOrder - lastName?: SortOrder - photoUrl?: SortOrder - languageCode?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - } - - export type UserMinOrderByAggregateInput = { - id?: SortOrder - telegramId?: SortOrder - username?: SortOrder - firstName?: SortOrder - lastName?: SortOrder - photoUrl?: SortOrder - languageCode?: SortOrder - createdAt?: SortOrder - updatedAt?: SortOrder - } - export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { equals?: string | StringFieldRefInput<$PrismaModel> | null in?: string[] | ListStringFieldRefInput<$PrismaModel> | null @@ -5459,6 +5580,72 @@ export namespace Prisma { _max?: NestedStringNullableFilter<$PrismaModel> } + export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedDateTimeFilter<$PrismaModel> + _max?: NestedDateTimeFilter<$PrismaModel> + } + + export type BoolFilter<$PrismaModel = never> = { + equals?: boolean | BooleanFieldRefInput<$PrismaModel> + not?: NestedBoolFilter<$PrismaModel> | boolean + } + + export type UserCountOrderByAggregateInput = { + id?: SortOrder + telegramId?: SortOrder + username?: SortOrder + firstName?: SortOrder + lastName?: SortOrder + photoUrl?: SortOrder + languageCode?: SortOrder + isAdmin?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + } + + export type UserMaxOrderByAggregateInput = { + id?: SortOrder + telegramId?: SortOrder + username?: SortOrder + firstName?: SortOrder + lastName?: SortOrder + photoUrl?: SortOrder + languageCode?: SortOrder + isAdmin?: SortOrder + createdAt?: SortOrder + updatedAt?: SortOrder + } + + export type UserMinOrderByAggregateInput = { + id?: SortOrder + telegramId?: SortOrder + username?: SortOrder + firstName?: SortOrder + 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 IntFilter<$PrismaModel = never> = { equals?: number | IntFieldRefInput<$PrismaModel> in?: number[] | ListIntFieldRefInput<$PrismaModel> @@ -5516,6 +5703,9 @@ export namespace Prisma { userId?: SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrder + audioMimeType?: SortOrder + audioAccessToken?: SortOrder status?: SortOrder transcript?: SortOrder analysis?: SortOrder @@ -5533,6 +5723,9 @@ export namespace Prisma { userId?: SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrder + audioMimeType?: SortOrder + audioAccessToken?: SortOrder status?: SortOrder transcript?: SortOrder createdAt?: SortOrder @@ -5545,6 +5738,9 @@ export namespace Prisma { userId?: SortOrder durationSeconds?: SortOrder audioObjectKey?: SortOrder + audioContentBase64?: SortOrder + audioMimeType?: SortOrder + audioAccessToken?: SortOrder status?: SortOrder transcript?: SortOrder createdAt?: SortOrder @@ -5607,6 +5803,10 @@ export namespace Prisma { _max?: NestedJsonNullableFilter<$PrismaModel> } + export type PlaceCreategoogleTypesInput = { + set: string[] + } + export type VoiceExperienceCreateNestedManyWithoutPlaceInput = { create?: XOR | VoiceExperienceCreateWithoutPlaceInput[] | VoiceExperienceUncheckedCreateWithoutPlaceInput[] connectOrCreate?: VoiceExperienceCreateOrConnectWithoutPlaceInput | VoiceExperienceCreateOrConnectWithoutPlaceInput[] @@ -5633,6 +5833,15 @@ export namespace Prisma { divide?: number } + export type NullableStringFieldUpdateOperationsInput = { + set?: string | null + } + + export type PlaceUpdategoogleTypesInput = { + set?: string[] + push?: string | string[] + } + export type DateTimeFieldUpdateOperationsInput = { set?: Date | string } @@ -5679,8 +5888,8 @@ export namespace Prisma { connect?: VoiceExperienceWhereUniqueInput | VoiceExperienceWhereUniqueInput[] } - export type NullableStringFieldUpdateOperationsInput = { - set?: string | null + export type BoolFieldUpdateOperationsInput = { + set?: boolean } export type VoiceExperienceUpdateManyWithoutUserNestedInput = { @@ -5778,6 +5987,20 @@ export namespace Prisma { not?: NestedFloatFilter<$PrismaModel> | number } + export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | StringFieldRefInput<$PrismaModel> | null + in?: string[] | ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null + lt?: string | StringFieldRefInput<$PrismaModel> + lte?: string | StringFieldRefInput<$PrismaModel> + gt?: string | StringFieldRefInput<$PrismaModel> + gte?: string | StringFieldRefInput<$PrismaModel> + contains?: string | StringFieldRefInput<$PrismaModel> + startsWith?: string | StringFieldRefInput<$PrismaModel> + endsWith?: string | StringFieldRefInput<$PrismaModel> + not?: NestedStringNullableFilter<$PrismaModel> | string | null + } + export type NestedDateTimeFilter<$PrismaModel = never> = { equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> @@ -5833,34 +6056,6 @@ export namespace Prisma { _max?: NestedFloatFilter<$PrismaModel> } - export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> - not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string - _count?: NestedIntFilter<$PrismaModel> - _min?: NestedDateTimeFilter<$PrismaModel> - _max?: NestedDateTimeFilter<$PrismaModel> - } - - export type NestedStringNullableFilter<$PrismaModel = never> = { - equals?: string | StringFieldRefInput<$PrismaModel> | null - in?: string[] | ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null - lt?: string | StringFieldRefInput<$PrismaModel> - lte?: string | StringFieldRefInput<$PrismaModel> - gt?: string | StringFieldRefInput<$PrismaModel> - gte?: string | StringFieldRefInput<$PrismaModel> - contains?: string | StringFieldRefInput<$PrismaModel> - startsWith?: string | StringFieldRefInput<$PrismaModel> - endsWith?: string | StringFieldRefInput<$PrismaModel> - not?: NestedStringNullableFilter<$PrismaModel> | string | null - } - export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { equals?: string | StringFieldRefInput<$PrismaModel> | null in?: string[] | ListStringFieldRefInput<$PrismaModel> | null @@ -5889,6 +6084,33 @@ export namespace Prisma { not?: NestedIntNullableFilter<$PrismaModel> | number | null } + export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | DateTimeFieldRefInput<$PrismaModel> + not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: NestedIntFilter<$PrismaModel> + _min?: NestedDateTimeFilter<$PrismaModel> + _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 NestedEnumVoiceExperienceStatusFilter<$PrismaModel = never> = { equals?: $Enums.VoiceExperienceStatus | EnumVoiceExperienceStatusFieldRefInput<$PrismaModel> in?: $Enums.VoiceExperienceStatus[] | ListEnumVoiceExperienceStatusFieldRefInput<$PrismaModel> @@ -5949,6 +6171,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 @@ -5962,6 +6187,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 @@ -6004,6 +6232,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"> @@ -6015,6 +6246,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 @@ -6028,6 +6262,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 @@ -6067,6 +6304,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType?: string | null + googleTypes?: PlaceCreategoogleTypesInput | string[] createdAt?: Date | string updatedAt?: Date | string } @@ -6077,6 +6316,8 @@ export namespace Prisma { name: string latitude: number longitude: number + googlePrimaryType?: string | null + googleTypes?: PlaceCreategoogleTypesInput | string[] createdAt?: Date | string updatedAt?: Date | string } @@ -6094,6 +6335,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string } @@ -6106,6 +6348,7 @@ export namespace Prisma { lastName?: string | null photoUrl?: string | null languageCode?: string | null + isAdmin?: boolean createdAt?: Date | string updatedAt?: Date | string } @@ -6132,6 +6375,8 @@ export namespace Prisma { name?: StringFieldUpdateOperationsInput | string latitude?: FloatFieldUpdateOperationsInput | number longitude?: FloatFieldUpdateOperationsInput | number + googlePrimaryType?: NullableStringFieldUpdateOperationsInput | string | null + googleTypes?: PlaceUpdategoogleTypesInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -6142,6 +6387,8 @@ export namespace Prisma { name?: StringFieldUpdateOperationsInput | string latitude?: FloatFieldUpdateOperationsInput | number longitude?: FloatFieldUpdateOperationsInput | number + googlePrimaryType?: NullableStringFieldUpdateOperationsInput | string | null + googleTypes?: PlaceUpdategoogleTypesInput | string[] createdAt?: DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -6165,6 +6412,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 } @@ -6177,6 +6425,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 } @@ -6186,6 +6435,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 @@ -6197,6 +6449,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 @@ -6210,6 +6465,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 @@ -6222,6 +6480,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 @@ -6234,6 +6495,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 @@ -6245,6 +6509,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 @@ -6258,6 +6525,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 @@ -6270,6 +6540,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 a7903da..8079386 100644 --- a/src/generated/prisma/index.js +++ b/src/generated/prisma/index.js @@ -99,6 +99,8 @@ exports.Prisma.PlaceScalarFieldEnum = { name: 'name', latitude: 'latitude', longitude: 'longitude', + googlePrimaryType: 'googlePrimaryType', + googleTypes: 'googleTypes', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -111,6 +113,7 @@ exports.Prisma.UserScalarFieldEnum = { lastName: 'lastName', photoUrl: 'photoUrl', languageCode: 'languageCode', + isAdmin: 'isAdmin', createdAt: 'createdAt', updatedAt: 'updatedAt' }; @@ -121,6 +124,9 @@ exports.Prisma.VoiceExperienceScalarFieldEnum = { userId: 'userId', durationSeconds: 'durationSeconds', audioObjectKey: 'audioObjectKey', + audioContentBase64: 'audioContentBase64', + audioMimeType: 'audioMimeType', + audioAccessToken: 'audioAccessToken', status: 'status', transcript: 'transcript', analysis: 'analysis', @@ -175,14 +181,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 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 voiceExperiences VoiceExperience[]\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 voiceExperiences VoiceExperience[]\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\":\"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\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"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\":\"voiceExperiences\",\"kind\":\"object\",\"type\":\"VoiceExperience\",\"relationName\":\"UserToVoiceExperience\"},{\"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\",\"voiceExperiences\",\"_count\",\"user\",\"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\",\"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\",\"telegramId\",\"username\",\"firstName\",\"lastName\",\"photoUrl\",\"languageCode\",\"every\",\"some\",\"none\",\"googlePlaceId\",\"name\",\"latitude\",\"longitude\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "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-ACFEAQB-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_ACFHAQB-ACFJAACAAUkiSgEAgQEAIUuAAAAAAUxAAIIBACFNQACCAQAhCgYAAIQBACBDAQB-ACFFAQCBAQAhRgIAfwAhRwEAfgAhSQAAgAFJIkoBAIEBACFLgAAAAAFMQACCAQAhTUAAggEAIQoGAACGAQAgQwEAAAABRQEAAAABRgIAAAABRwEAAAABSQAAAEkCSgEAAAABS4AAAAABTEAAAAABTUAAAAABBBQAAKABADBuAAChAQAwcAAAowEAIHQAAI8BADABBwAAmAEAIAYEAACYAQAgYAAAeAAgYQAAeAAgYgAAeAAgYwAAeAAgZAAAeAAgCUMBAAAAAUUBAAAAAUYCAAAAAUcBAAAAAUkAAABJAkoBAAAAAUuAAAAAAUxAAAAAAU1AAAAAAQlDAQAAAAFEAQAAAAFGAgAAAAFHAQAAAAFJAAAASQJKAQAAAAFLgAAAAAFMQAAAAAFNQAAAAAEJQwEAAAABTEAAAAABTUAAAAABXwEAAAABYAEAAAABYQEAAAABYgEAAAABYwEAAAABZAEAAAABAgAAACMAIBQAAK4BACAHQwEAAAABTEAAAAABTUAAAAABaAEAAAABaQEAAAABaggAAAABawgAAAABAgAAAAEAIBQAALABACADAAAABwAgFAAArgEAIBUAALQBACALAAAABwAgDQAAtAEAIEMBAH4AIUxAAIIBACFNQACCAQAhXwEAfgAhYAEAgQEAIWEBAIEBACFiAQCBAQAhYwEAgQEAIWQBAIEBACEJQwEAfgAhTEAAggEAIU1AAIIBACFfAQB-ACFgAQCBAQAhYQEAgQEAIWIBAIEBACFjAQCBAQAhZAEAgQEAIQMAAAANACAUAACwAQAgFQAAtwEAIAkAAAANACANAAC3AQAgQwEAfgAhTEAAggEAIU1AAIIBACFoAQB-ACFpAQB-ACFqCACeAQAhawgAngEAIQdDAQB-ACFMQACCAQAhTUAAggEAIWgBAH4AIWkBAH4AIWoIAJ4BACFrCACeAQAhAgUABQcGAgIDAAEGCAMCBAkCBQAEAQQKAAEHCwAAAAAFBQAKGgALGwAMHAANHQAOAAAAAAAFBQAKGgALGwAMHAANHQAOAAADBQATHAAUHQAVAAAAAwUAExwAFB0AFQIDAAEGRQMCAwABBksDBQUAGhoAGxsAHBwAHR0AHgAAAAAABQUAGhoAGxsAHBwAHR0AHggCAQkMAQoPAQsQAQwRAQ4TAQ8VBhAWBxEYARIaBhMbCBYcARcdARgeBh4hCR8iDyAkAyElAyInAyMoAyQpAyUrAyYtBicuECgwAykyBiozESs0Ayw1Ay02Bi45Ei86FjA7AjE8AjI9AjM-AjQ_AjVBAjZDBjdEFzhHAjlJBjpKGDtMAjxNAj1OBj5RGT9SHw" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"place\",\"voiceExperiences\",\"_count\",\"user\",\"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\",\"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\",\"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: "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ACFPQABZACFQQABZACFiAQBUACFjAQBVACFkAQBVACFlAQBVACFmAQBVACFnAQBVACFoIABoACEDAAAABwAgAQAANwAwGQAAOAAgAwAAAAcAIAEAACYAMAIAACMAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgDwMAAIoBACAGAACLAQAgQwEAAAABRAEAAAABRQEAAAABRgIAAAABRwEAAAABSAEAAAABSQEAAAABSgEAAAABTAAAAEwCTQEAAAABToAAAAABT0AAAAABUEAAAAABAQ0AAEAAIA1DAQAAAAFEAQAAAAFFAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAEBDQAAQgAwAQ0AAEIAMAEAAAAHACAPAwAAiAEAIAYAAIkBACBDAQCDAQAhRAEAgwEAIUUBAIUBACFGAgCEAQAhRwEAgwEAIUgBAIUBACFJAQCFAQAhSgEAhQEAIUwAAIYBTCJNAQCFAQAhToAAAAABT0AAhwEAIVBAAIcBACECAAAABQAgDQAARgAgDUMBAIMBACFEAQCDAQAhRQEAhQEAIUYCAIQBACFHAQCDAQAhSAEAhQEAIUkBAIUBACFKAQCFAQAhTAAAhgFMIk0BAIUBACFOgAAAAAFPQACHAQAhUEAAhwEAIQIAAAADACANAABIACACAAAAAwAgDQAASAAgAQAAAAcAIAMAAAAFACAUAABAACAVAABGACABAAAABQAgAQAAAAMAIAsFAAB-ACAaAAB_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_AACYAQAwDQYAAIsBACBDAQAAAAFFAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAECAAAABQAgFAAArwEAIAMAAAAFACAUAACvAQAgFQAArgEAIAENAAC0AQAwAgAAAAUAIA0AAK4BACACAAAAmQEAIA0AAK0BACAMQwEAgwEAIUUBAIUBACFGAgCEAQAhRwEAgwEAIUgBAIUBACFJAQCFAQAhSgEAhQEAIUwAAIYBTCJNAQCFAQAhToAAAAABT0AAhwEAIVBAAIcBACENBgAAiQEAIEMBAIMBACFFAQCFAQAhRgIAhAEAIUcBAIMBACFIAQCFAQAhSQEAhQEAIUoBAIUBACFMAACGAUwiTQEAhQEAIU6AAAAAAU9AAIcBACFQQACHAQAhDQYAAIsBACBDAQAAAAFFAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAEBegEAAAAEBBQAAKcBADB3AACoAQAweQAAqgEAIH0AAJUBADACBwAAngEAIHAAAH0AIAYEAACeAQAgYwAAfQAgZAAAfQAgZQAAfQAgZgAAfQAgZwAAfQAgDEMBAAAAAUUBAAAAAUYCAAAAAUcBAAAAAUgBAAAAAUkBAAAAAUoBAAAAAUwAAABMAk0BAAAAAU6AAAAAAU9AAAAAAVBAAAAAAQxDAQAAAAFEAQAAAAFGAgAAAAFHAQAAAAFIAQAAAAFJAQAAAAFKAQAAAAFMAAAATAJNAQAAAAFOgAAAAAFPQAAAAAFQQAAAAAEKQwEAAAABT0AAAAABUEAAAAABYgEAAAABYwEAAAABZAEAAAABZQEAAAABZgEAAAABZwEAAAABaCAAAAABAgAAACMAIBQAALYBACAJQwEAAAABT0AAAAABUEAAAAABbAEAAAABbQEAAAABbggAAAABbwgAAAABcAEAAAABcQAAsAEAIAIAAAABACAUAAC4AQAgAwAAAAcAIBQAALYBACAVAAC8AQAgDAAAAAcAIA0AALwBACBDAQCDAQAhT0AAhwEAIVBAAIcBACFiAQCDAQAhYwEAhQEAIWQBAIUBACFlAQCFAQAhZgEAhQEAIWcBAIUBACFoIACPAQAhCkMBAIMBACFPQACHAQAhUEAAhwEAIWIBAIMBACFjAQCFAQAhZAEAhQEAIWUBAIUBACFmAQCFAQAhZwEAhQEAIWggAI8BACEDAAAADQAgFAAAuAEAIBUAAL8BACALAAAADQAgDQAAvwEAIEMBAIMBACFPQACHAQAhUEAAhwEAIWwBAIMBACFtAQCDAQAhbggApAEAIW8IAKQBACFwAQCFAQAhcQAApQEAIAlDAQCDAQAhT0AAhwEAIVBAAIcBACFsAQCDAQAhbQEAgwEAIW4IAKQBACFvCACkAQAhcAEAhQEAIXEAAKUBACACBQAFBwYCAgMAAQYIAwIECQIFAAQBBAoAAQcLAAAAAAUFAAoaAAsbAAwcAA0dAA4AAAAAAAUFAAoaAAsbAAwcAA0dAA4AAAMFABMcABQdABUAAAADBQATHAAUHQAVAgMAAQZFAwIDAAEGSwMFBQAaGgAbGwAcHAAdHQAeAAAAAAAFBQAaGgAbGwAcHAAdHQAeCAIBCQwBCg8BCxABDBEBDhMBDxUGEBYHERgBEhoGExsIFhwBFx0BGB4GHiEJHyIPICQDISUDIicDIygDJCkDJSsDJi0GJy4QKDADKTIGKjMRKzQDLDUDLTYGLjkSLzoWMDsCMTwCMj0CMz4CND8CNUECNkMGN0QXOEcCOUkGOkoYO0wCPE0CPU4GPlEZP1If" } 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 a215de3..5969552 100644 --- a/src/generated/prisma/package.json +++ b/src/generated/prisma/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-359590a92aedb32557346cd24ba7dd77e7dd4a806bf36f6641715b1b22de87e3", + "name": "prisma-client-404088dc715856cb4ed2e7f2d4b8eb35c87427ce32c0e67bc04d6ff67961fc2b", "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 6745daa..f92c167 100644 --- a/src/generated/prisma/schema.prisma +++ b/src/generated/prisma/schema.prisma @@ -17,14 +17,16 @@ enum VoiceExperienceStatus { } model Place { - id String @id @default(cuid()) - googlePlaceId String @unique - name String - latitude Float - longitude Float - experiences VoiceExperience[] - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + 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 } model User { @@ -35,22 +37,26 @@ model User { lastName String? photoUrl String? languageCode String? + isAdmin Boolean @default(false) voiceExperiences VoiceExperience[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } 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/jobs/analyze-voice-experience.ts b/src/jobs/analyze-voice-experience.ts index 6c117e1..2d83aab 100644 --- a/src/jobs/analyze-voice-experience.ts +++ b/src/jobs/analyze-voice-experience.ts @@ -1,6 +1,27 @@ -import { buildPlaceAnalysis } from '../ontology/place-ontology.js'; +import { config } from '../config.js'; +import { placeOntology } from '../ontology/place-ontology.js'; import { prisma } from '../prisma.js'; +type OpenRouterResponse = { + choices?: Array<{ + message?: { + content?: string; + }; + }>; +}; + +type PlaceAnalysis = { + placeName: string; + tags: string[]; + signals: Array<{ + axis: string; + leaf: string; + evidence: string; + confidence: number; + }>; + summary: string; +}; + export async function analyzeVoiceExperience(experienceId: string) { const experience = await prisma.voiceExperience.findUnique({ where: { id: experienceId }, @@ -20,7 +41,7 @@ export async function analyzeVoiceExperience(experienceId: string) { data: { status: 'ANALYZING' }, }); - const analysis = buildPlaceAnalysis({ + const analysis = await buildPlaceAnalysis({ placeName: experience.place.name, transcript: experience.transcript, }); @@ -35,3 +56,98 @@ export async function analyzeVoiceExperience(experienceId: string) { return { tags: analysis.tags }; } + +async function buildPlaceAnalysis(input: { + placeName: string; + transcript: string; +}): Promise { + if (!config.openRouterApiKey) { + throw new Error('OPENROUTER_API_KEY is required for voice analysis.'); + } + + const ontology = placeOntology.map((axis) => ({ + axis: axis.id, + options: axis.leaves.map((leaf) => ({ + tag: `${axis.id}:${leaf.id}`, + keywords: leaf.keywords, + })), + })); + const response = await fetch('https://openrouter.ai/api/v1/chat/completions', { + method: 'POST', + headers: { + authorization: `Bearer ${config.openRouterApiKey}`, + 'content-type': 'application/json', + 'http-referer': 'https://map.craftee.vn', + 'x-title': 'MapFlow', + }, + body: JSON.stringify({ + model: config.openRouterModel, + temperature: 0.1, + max_tokens: 900, + messages: [ + { + role: 'system', + content: + 'You classify voice reviews about places. Return only valid JSON. Use only allowed ontology tags.', + }, + { + role: 'user', + content: JSON.stringify({ + task: + 'Analyze the transcript and select place-experience tags that are explicitly supported by the text. Do not invent facts.', + outputShape: { + placeName: 'string', + tags: ['axis:leaf'], + signals: [ + { + axis: 'string', + leaf: 'string', + evidence: 'short quote or paraphrase from transcript', + confidence: 'number from 0 to 1', + }, + ], + summary: 'one short sentence', + }, + placeName: input.placeName, + ontology, + transcript: input.transcript, + }), + }, + ], + }), + }); + + if (!response.ok) { + throw new Error(`OpenRouter analysis failed with ${response.status}.`); + } + + const payload = (await response.json()) as OpenRouterResponse; + const content = payload.choices?.[0]?.message?.content; + if (!content) { + throw new Error('OpenRouter returned an empty analysis.'); + } + + const analysis = JSON.parse(content) as PlaceAnalysis; + assertValidAnalysis(analysis); + return analysis; +} + +function assertValidAnalysis(analysis: PlaceAnalysis) { + const allowedTags = new Set( + placeOntology.flatMap((axis) => + axis.leaves.map((leaf) => `${axis.id}:${leaf.id}`), + ), + ); + + if (!Array.isArray(analysis.tags)) { + throw new Error('OpenRouter analysis tags must be an array.'); + } + for (const tag of analysis.tags) { + if (!allowedTags.has(tag)) { + throw new Error(`OpenRouter returned unsupported tag: ${tag}.`); + } + } + if (!Array.isArray(analysis.signals)) { + throw new Error('OpenRouter analysis signals must be an array.'); + } +} diff --git a/src/jobs/transcribe-voice-experience.ts b/src/jobs/transcribe-voice-experience.ts index 0ddab45..1b1e5c6 100644 --- a/src/jobs/transcribe-voice-experience.ts +++ b/src/jobs/transcribe-voice-experience.ts @@ -1,5 +1,19 @@ +import { config } from '../config.js'; import { prisma } from '../prisma.js'; +type DeepgramResponse = { + results?: { + channels?: Array<{ + alternatives?: Array<{ + transcript?: string; + paragraphs?: { + transcript?: string; + }; + }>; + }>; + }; +}; + export async function transcribeVoiceExperience(experienceId: string) { const experience = await prisma.voiceExperience.findUnique({ where: { id: experienceId }, @@ -14,11 +28,13 @@ export async function transcribeVoiceExperience(experienceId: string) { data: { status: 'TRANSCRIBING' }, }); - const transcript = await transcribeAudioObject(experience.audioObjectKey); + const transcript = await transcribeAudioObject(experience.id); await prisma.voiceExperience.update({ where: { id: experienceId }, data: { + audioContentBase64: null, + audioAccessToken: null, transcript, status: 'TRANSCRIBED', }, @@ -27,7 +43,68 @@ export async function transcribeVoiceExperience(experienceId: string) { return { transcript }; } -async function transcribeAudioObject(audioObjectKey: string): Promise { - // TODO: replace this adapter with the production speech-to-text provider. - return `Transcription placeholder for ${audioObjectKey}`; +async function transcribeAudioObject(experienceId: string): Promise { + if (!config.deepgramApiKey) { + throw new Error('DEEPGRAM_API_KEY is required for transcription.'); + } + + const experience = await prisma.voiceExperience.findUnique({ + where: { id: experienceId }, + select: { + id: true, + audioObjectKey: true, + audioAccessToken: true, + audioContentBase64: true, + audioMimeType: true, + }, + }); + + if (!experience) { + throw new Error(`Voice experience ${experienceId} was not found.`); + } + if (!experience.audioAccessToken) { + throw new Error( + `Voice audio ${experience.audioObjectKey} has no access token.`, + ); + } + if (!experience.audioContentBase64 || !experience.audioMimeType) { + throw new Error( + `Voice audio ${experience.audioObjectKey} has no stored content.`, + ); + } + + const params = new URLSearchParams({ + model: config.deepgramModel, + language: config.deepgramLanguage, + smart_format: 'true', + punctuate: 'true', + }); + const audioUrl = `${config.publicApiUrl.replace(/\/$/, '')}/audio/voice-experiences/${experience.id}?token=${encodeURIComponent(experience.audioAccessToken)}`; + const response = await fetch( + `https://api.deepgram.com/v1/listen?${params.toString()}`, + { + method: 'POST', + headers: { + authorization: `Token ${config.deepgramApiKey}`, + 'content-type': 'application/json', + }, + body: JSON.stringify({ url: audioUrl }), + }, + ); + + if (!response.ok) { + throw new Error(`Deepgram transcription failed with ${response.status}.`); + } + + const payload = (await response.json()) as DeepgramResponse; + const alternative = payload.results?.channels?.[0]?.alternatives?.[0]; + const transcript = + alternative?.paragraphs?.transcript?.trim() ?? + alternative?.transcript?.trim() ?? + ''; + if (!transcript) { + throw new Error('Deepgram returned an empty transcript.'); + } + + return transcript; }