From 15d1bed09c0ded62d5bef215b9c09494da7f769d Mon Sep 17 00:00:00 2001 From: root Date: Sun, 9 Mar 2025 21:35:51 -0500 Subject: [PATCH] Big 'ol fix, deleting sessions, creating users, migrations, etc --- package-lock.json | 2 +- .../20250310013319_init/migration.sql | 94 +++++++++++++++++++ prisma/migrations/migration_lock.toml | 3 + server/routes/sessions/[sid]/index.ts | 10 ++ server/routes/users/[id]/progress.ts | 2 +- server/routes/users/[id]/progress/import.ts | 2 +- 6 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 prisma/migrations/20250310013319_init/migration.sql create mode 100644 prisma/migrations/migration_lock.toml diff --git a/package-lock.json b/package-lock.json index 2fd725d..7341324 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "open-backend", + "name": "open-backend-1", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/prisma/migrations/20250310013319_init/migration.sql b/prisma/migrations/20250310013319_init/migration.sql new file mode 100644 index 0000000..a4c1a2a --- /dev/null +++ b/prisma/migrations/20250310013319_init/migration.sql @@ -0,0 +1,94 @@ +-- CreateTable +CREATE TABLE "bookmarks" ( + "tmdb_id" VARCHAR(255) NOT NULL, + "user_id" VARCHAR(255) NOT NULL, + "meta" JSONB NOT NULL, + "updated_at" TIMESTAMPTZ(0) NOT NULL, + + CONSTRAINT "bookmarks_pkey" PRIMARY KEY ("tmdb_id","user_id") +); + +-- CreateTable +CREATE TABLE "challenge_codes" ( + "code" UUID NOT NULL, + "flow" TEXT NOT NULL, + "auth_type" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMPTZ(0) NOT NULL, + "expires_at" TIMESTAMPTZ(0) NOT NULL, + + CONSTRAINT "challenge_codes_pkey" PRIMARY KEY ("code") +); + +-- CreateTable +CREATE TABLE "mikro_orm_migrations" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(255), + "executed_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "mikro_orm_migrations_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "progress_items" ( + "id" UUID NOT NULL, + "tmdb_id" VARCHAR(255) NOT NULL, + "user_id" VARCHAR(255) NOT NULL, + "season_id" VARCHAR(255), + "episode_id" VARCHAR(255), + "meta" JSONB NOT NULL, + "updated_at" TIMESTAMPTZ(0) NOT NULL, + "duration" BIGINT NOT NULL, + "watched" BIGINT NOT NULL, + "season_number" INTEGER, + "episode_number" INTEGER, + + CONSTRAINT "progress_items_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "sessions" ( + "id" UUID NOT NULL, + "user" TEXT NOT NULL, + "created_at" TIMESTAMPTZ(0) NOT NULL, + "accessed_at" TIMESTAMPTZ(0) NOT NULL, + "expires_at" TIMESTAMPTZ(0) NOT NULL, + "device" TEXT NOT NULL, + "user_agent" TEXT NOT NULL, + + CONSTRAINT "sessions_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "user_settings" ( + "id" TEXT NOT NULL, + "application_theme" VARCHAR(255), + "application_language" VARCHAR(255), + "default_subtitle_language" VARCHAR(255), + "proxy_urls" TEXT[], + "trakt_key" VARCHAR(255), + "febbox_key" VARCHAR(255), + + CONSTRAINT "user_settings_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "users" ( + "id" TEXT NOT NULL, + "public_key" TEXT NOT NULL, + "namespace" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMPTZ(0) NOT NULL, + "last_logged_in" TIMESTAMPTZ(0), + "permissions" TEXT[], + "profile" JSONB NOT NULL, + + CONSTRAINT "users_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "bookmarks_tmdb_id_user_id_unique" ON "bookmarks"("tmdb_id", "user_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "progress_items_tmdb_id_user_id_season_id_episode_id_unique" ON "progress_items"("tmdb_id", "user_id", "season_id", "episode_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "users_public_key_unique" ON "users"("public_key"); diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..648c57f --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" \ No newline at end of file diff --git a/server/routes/sessions/[sid]/index.ts b/server/routes/sessions/[sid]/index.ts index 082b836..3a06cd3 100644 --- a/server/routes/sessions/[sid]/index.ts +++ b/server/routes/sessions/[sid]/index.ts @@ -89,6 +89,16 @@ export default defineEventHandler(async (event) => { } if (event.method === 'DELETE') { + const sid = event.context.params?.sid; + const sessionExists = await prisma.sessions.findUnique({ + where: { id: sid } + }); + + if (!sessionExists) { + return { success: true }; + } + const session = await auth.getSessionAndBump(sid); + await prisma.sessions.delete({ where: { id: sessionId } }); diff --git a/server/routes/users/[id]/progress.ts b/server/routes/users/[id]/progress.ts index 5b91e9e..0aca9eb 100644 --- a/server/routes/users/[id]/progress.ts +++ b/server/routes/users/[id]/progress.ts @@ -5,7 +5,7 @@ import { randomUUID } from 'crypto'; const progressMetaSchema = z.object({ title: z.string(), poster: z.string().optional(), - type: z.enum(['movie', 'tv']), + type: z.enum(['movie', 'tv', 'show']), year: z.number().optional() }); diff --git a/server/routes/users/[id]/progress/import.ts b/server/routes/users/[id]/progress/import.ts index 3a8e7ac..622da2a 100644 --- a/server/routes/users/[id]/progress/import.ts +++ b/server/routes/users/[id]/progress/import.ts @@ -5,7 +5,7 @@ import { randomUUID } from 'crypto'; const progressMetaSchema = z.object({ title: z.string(), poster: z.string().optional(), - type: z.enum(['movie', 'tv']), + type: z.enum(['movie', 'tv', 'show']), year: z.number().optional() });