Compare commits

...

5 Commits

Author SHA1 Message Date
6556ac8354 Merge pull request 'fix-media' (#32) from fix-media into main
All checks were successful
Sync to GitHub / sync (push) Successful in 10s
Reviewed-on: #32
2026-04-24 10:31:42 +07:00
16d8c00d75 🗃️ db: fix schema drift and correct season enum
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 1m14s
2026-04-22 12:18:56 +07:00
e61686956b Merge pull request 'media-detail' (#31) from media-detail into main
All checks were successful
Sync to GitHub / sync (push) Successful in 9s
Reviewed-on: #31
2026-04-21 20:44:51 +07:00
baf7ba20b1 🗃️ db: enforce season field constraint 2026-04-07 12:00:00 +07:00
697f28de60 🗃️ db: add season field to media model 2026-04-03 12:00:00 +07:00
6 changed files with 808 additions and 860 deletions

View File

@ -7,6 +7,9 @@ CREATE TYPE "MediaType" AS ENUM ('TV', 'ONA', 'OVA', 'Movie', 'Special', 'Music'
-- CreateEnum -- CreateEnum
CREATE TYPE "Country" AS ENUM ('Japanese', 'English', 'Indonesia', 'Korea'); CREATE TYPE "Country" AS ENUM ('Japanese', 'English', 'Indonesia', 'Korea');
-- CreateEnum
CREATE TYPE "Season" AS ENUM ('Winter', 'Spring', 'Summer', 'Fall');
-- CreateEnum -- CreateEnum
CREATE TYPE "CharacterRole" AS ENUM ('Main', 'Supporting'); CREATE TYPE "CharacterRole" AS ENUM ('Main', 'Supporting');
@ -72,6 +75,8 @@ CREATE TABLE "medias" (
"deletedAt" TIMESTAMP(3), "deletedAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"season" "Season",
"yearReleased" SMALLINT NOT NULL,
CONSTRAINT "medias_pkey" PRIMARY KEY ("id") CONSTRAINT "medias_pkey" PRIMARY KEY ("id")
); );
@ -367,7 +372,7 @@ CREATE TABLE "user_logs" (
-- CreateTable -- CreateTable
CREATE TABLE "collections" ( CREATE TABLE "collections" (
"id" UUID NOT NULL, "id" UUID NOT NULL,
"name" VARCHAR(255) NOT NULL, "name" VARCHAR(115) NOT NULL,
"ownerId" UUID NOT NULL, "ownerId" UUID NOT NULL,
"accessStatus" "AccessStatus" NOT NULL DEFAULT 'private', "accessStatus" "AccessStatus" NOT NULL DEFAULT 'private',
"password" VARCHAR(255), "password" VARCHAR(255),
@ -375,10 +380,21 @@ CREATE TABLE "collections" (
"deletedAt" TIMESTAMP(3), "deletedAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"slug" VARCHAR(115) NOT NULL,
CONSTRAINT "collections_pkey" PRIMARY KEY ("id") CONSTRAINT "collections_pkey" PRIMARY KEY ("id")
); );
-- CreateTable
CREATE TABLE "CollectionMedia" (
"id" UUID NOT NULL,
"collectionId" UUID NOT NULL,
"mediaId" UUID NOT NULL,
"savedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "CollectionMedia_pkey" PRIMARY KEY ("id")
);
-- CreateTable -- CreateTable
CREATE TABLE "watch_histories" ( CREATE TABLE "watch_histories" (
"id" UUID NOT NULL, "id" UUID NOT NULL,
@ -502,18 +518,13 @@ CREATE TABLE "email_system_histories" (
CREATE TABLE "hero_banner" ( CREATE TABLE "hero_banner" (
"id" UUID NOT NULL, "id" UUID NOT NULL,
"orderPriority" INTEGER, "orderPriority" INTEGER,
"isClickable" BOOLEAN NOT NULL DEFAULT false,
"title" VARCHAR(225),
"tags" TEXT[],
"description" TEXT,
"buttonContent" VARCHAR(100),
"buttonLink" TEXT,
"imageUrl" TEXT, "imageUrl" TEXT,
"startDate" TIMESTAMP(3) NOT NULL, "startDate" TIMESTAMP(3) NOT NULL,
"endDate" TIMESTAMP(3) NOT NULL, "endDate" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"creatorId" UUID NOT NULL, "creatorId" UUID NOT NULL,
"mediaId" UUID NOT NULL,
CONSTRAINT "hero_banner_pkey" PRIMARY KEY ("id") CONSTRAINT "hero_banner_pkey" PRIMARY KEY ("id")
); );
@ -591,14 +602,6 @@ CREATE TABLE "_MediaCharacters" (
CONSTRAINT "_MediaCharacters_AB_pkey" PRIMARY KEY ("A","B") CONSTRAINT "_MediaCharacters_AB_pkey" PRIMARY KEY ("A","B")
); );
-- CreateTable
CREATE TABLE "_MediaCollections" (
"A" UUID NOT NULL,
"B" UUID NOT NULL,
CONSTRAINT "_MediaCollections_AB_pkey" PRIMARY KEY ("A","B")
);
-- CreateTable -- CreateTable
CREATE TABLE "_UserSelectedSharingCollention" ( CREATE TABLE "_UserSelectedSharingCollention" (
"A" UUID NOT NULL, "A" UUID NOT NULL,
@ -673,6 +676,12 @@ CREATE UNIQUE INDEX "user_roles_name_key" ON "user_roles"("name");
-- CreateIndex -- CreateIndex
CREATE INDEX "user_sessions_userId_isAuthenticated_deletedAt_idx" ON "user_sessions"("userId", "isAuthenticated", "deletedAt"); CREATE INDEX "user_sessions_userId_isAuthenticated_deletedAt_idx" ON "user_sessions"("userId", "isAuthenticated", "deletedAt");
-- CreateIndex
CREATE UNIQUE INDEX "collections_slug_ownerId_key" ON "collections"("slug", "ownerId");
-- CreateIndex
CREATE UNIQUE INDEX "CollectionMedia_collectionId_mediaId_key" ON "CollectionMedia"("collectionId", "mediaId");
-- CreateIndex -- CreateIndex
CREATE UNIQUE INDEX "languages_code_key" ON "languages"("code"); CREATE UNIQUE INDEX "languages_code_key" ON "languages"("code");
@ -703,24 +712,21 @@ CREATE INDEX "_UserFavoriteGenres_B_index" ON "_UserFavoriteGenres"("B");
-- CreateIndex -- CreateIndex
CREATE INDEX "_MediaCharacters_B_index" ON "_MediaCharacters"("B"); CREATE INDEX "_MediaCharacters_B_index" ON "_MediaCharacters"("B");
-- CreateIndex
CREATE INDEX "_MediaCollections_B_index" ON "_MediaCollections"("B");
-- CreateIndex -- CreateIndex
CREATE INDEX "_UserSelectedSharingCollention_B_index" ON "_UserSelectedSharingCollention"("B"); CREATE INDEX "_UserSelectedSharingCollention_B_index" ON "_UserSelectedSharingCollention"("B");
-- AddForeignKey -- AddForeignKey
ALTER TABLE "medias" ADD CONSTRAINT "medias_uploadedBy_fkey" FOREIGN KEY ("uploadedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "medias" ADD CONSTRAINT "medias_uploadedBy_fkey" FOREIGN KEY ("uploadedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "media_logs" ADD CONSTRAINT "media_logs_proposedBy_fkey" FOREIGN KEY ("proposedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "media_logs" ADD CONSTRAINT "media_logs_approvedBy_fkey" FOREIGN KEY ("approvedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "media_logs" ADD CONSTRAINT "media_logs_approvedBy_fkey" FOREIGN KEY ("approvedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "media_logs" ADD CONSTRAINT "media_logs_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "media_logs" ADD CONSTRAINT "media_logs_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "media_logs" ADD CONSTRAINT "media_logs_proposedBy_fkey" FOREIGN KEY ("proposedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "genres" ADD CONSTRAINT "genres_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "genres" ADD CONSTRAINT "genres_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -733,15 +739,15 @@ ALTER TABLE "characters" ADD CONSTRAINT "characters_creatorId_fkey" FOREIGN KEY
-- AddForeignKey -- AddForeignKey
ALTER TABLE "voice_actors" ADD CONSTRAINT "voice_actors_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "voice_actors" ADD CONSTRAINT "voice_actors_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "lang_va_char" ADD CONSTRAINT "lang_va_char_vaId_fkey" FOREIGN KEY ("vaId") REFERENCES "voice_actors"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "lang_va_char" ADD CONSTRAINT "lang_va_char_charId_fkey" FOREIGN KEY ("charId") REFERENCES "characters"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "lang_va_char" ADD CONSTRAINT "lang_va_char_charId_fkey" FOREIGN KEY ("charId") REFERENCES "characters"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "lang_va_char" ADD CONSTRAINT "lang_va_char_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "lang_va_char" ADD CONSTRAINT "lang_va_char_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "lang_va_char" ADD CONSTRAINT "lang_va_char_vaId_fkey" FOREIGN KEY ("vaId") REFERENCES "voice_actors"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "episodes" ADD CONSTRAINT "episodes_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "episodes" ADD CONSTRAINT "episodes_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -749,13 +755,13 @@ ALTER TABLE "episodes" ADD CONSTRAINT "episodes_mediaId_fkey" FOREIGN KEY ("medi
ALTER TABLE "episodes" ADD CONSTRAINT "episodes_uploadedBy_fkey" FOREIGN KEY ("uploadedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "episodes" ADD CONSTRAINT "episodes_uploadedBy_fkey" FOREIGN KEY ("uploadedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "videos" ADD CONSTRAINT "videos_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "videos" ADD CONSTRAINT "videos_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -769,23 +775,23 @@ ALTER TABLE "videos" ADD CONSTRAINT "videos_uploadedBy_fkey" FOREIGN KEY ("uploa
-- AddForeignKey -- AddForeignKey
ALTER TABLE "video_services" ADD CONSTRAINT "video_services_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "video_services" ADD CONSTRAINT "video_services_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_langPreference_fkey" FOREIGN KEY ("langPreference") REFERENCES "languages"("code") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_langPreference_fkey" FOREIGN KEY ("langPreference") REFERENCES "languages"("code") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_serviceDefaultId_fkey" FOREIGN KEY ("serviceDefaultId") REFERENCES "video_services"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_serviceDefaultId_fkey" FOREIGN KEY ("serviceDefaultId") REFERENCES "video_services"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_role_assignments" ADD CONSTRAINT "user_role_assignments_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_role_assignments" ADD CONSTRAINT "user_role_assignments_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "user_roles"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_role_assignments" ADD CONSTRAINT "user_role_assignments_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "user_roles"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_role_assignments" ADD CONSTRAINT "user_role_assignments_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -794,29 +800,35 @@ ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_userId_fkey"
ALTER TABLE "user_sessions" ADD CONSTRAINT "user_sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_sessions" ADD CONSTRAINT "user_sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_logs" ADD CONSTRAINT "user_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_logs" ADD CONSTRAINT "user_logs_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "user_logs" ADD CONSTRAINT "user_logs_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "user_logs" ADD CONSTRAINT "user_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "collections" ADD CONSTRAINT "collections_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "collections" ADD CONSTRAINT "collections_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_id_fkey" FOREIGN KEY ("id") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "CollectionMedia" ADD CONSTRAINT "CollectionMedia_collectionId_fkey" FOREIGN KEY ("collectionId") REFERENCES "collections"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "CollectionMedia" ADD CONSTRAINT "CollectionMedia_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_id_fkey" FOREIGN KEY ("id") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "movie_reviews" ADD CONSTRAINT "movie_reviews_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "movie_reviews" ADD CONSTRAINT "movie_reviews_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "movie_reviews" ADD CONSTRAINT "movie_reviews_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "movie_reviews" ADD CONSTRAINT "movie_reviews_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "comments" ADD CONSTRAINT "comments_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "comments" ADD CONSTRAINT "comments_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -833,10 +845,10 @@ ALTER TABLE "comment_likes" ADD CONSTRAINT "comment_likes_commentId_fkey" FOREIG
ALTER TABLE "comment_likes" ADD CONSTRAINT "comment_likes_userLiked_fkey" FOREIGN KEY ("userLiked") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "comment_likes" ADD CONSTRAINT "comment_likes_userLiked_fkey" FOREIGN KEY ("userLiked") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "comment_reports" ADD CONSTRAINT "comment_reports_userReporter_fkey" FOREIGN KEY ("userReporter") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "comment_reports" ADD CONSTRAINT "comment_reports_approvedBy_fkey" FOREIGN KEY ("approvedBy") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "comment_reports" ADD CONSTRAINT "comment_reports_approvedBy_fkey" FOREIGN KEY ("approvedBy") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "comment_reports" ADD CONSTRAINT "comment_reports_userReporter_fkey" FOREIGN KEY ("userReporter") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "languages" ADD CONSTRAINT "languages_craetedBy_fkey" FOREIGN KEY ("craetedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "languages" ADD CONSTRAINT "languages_craetedBy_fkey" FOREIGN KEY ("craetedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -850,6 +862,9 @@ ALTER TABLE "email_system_histories" ADD CONSTRAINT "email_system_histories_user
-- AddForeignKey -- AddForeignKey
ALTER TABLE "hero_banner" ADD CONSTRAINT "hero_banner_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "hero_banner" ADD CONSTRAINT "hero_banner_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "hero_banner" ADD CONSTRAINT "hero_banner_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "system_notifications" ADD CONSTRAINT "system_notifications_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "system_notifications" ADD CONSTRAINT "system_notifications_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@ -880,12 +895,6 @@ ALTER TABLE "_MediaCharacters" ADD CONSTRAINT "_MediaCharacters_A_fkey" FOREIGN
-- AddForeignKey -- AddForeignKey
ALTER TABLE "_MediaCharacters" ADD CONSTRAINT "_MediaCharacters_B_fkey" FOREIGN KEY ("B") REFERENCES "medias"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "_MediaCharacters" ADD CONSTRAINT "_MediaCharacters_B_fkey" FOREIGN KEY ("B") REFERENCES "medias"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_MediaCollections" ADD CONSTRAINT "_MediaCollections_A_fkey" FOREIGN KEY ("A") REFERENCES "collections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_MediaCollections" ADD CONSTRAINT "_MediaCollections_B_fkey" FOREIGN KEY ("B") REFERENCES "medias"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE "_UserSelectedSharingCollention" ADD CONSTRAINT "_UserSelectedSharingCollention_A_fkey" FOREIGN KEY ("A") REFERENCES "collections"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "_UserSelectedSharingCollention" ADD CONSTRAINT "_UserSelectedSharingCollention_A_fkey" FOREIGN KEY ("A") REFERENCES "collections"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,23 +0,0 @@
/*
Warnings:
- You are about to drop the column `buttonContent` on the `hero_banner` table. All the data in the column will be lost.
- You are about to drop the column `buttonLink` on the `hero_banner` table. All the data in the column will be lost.
- You are about to drop the column `description` on the `hero_banner` table. All the data in the column will be lost.
- You are about to drop the column `isClickable` on the `hero_banner` table. All the data in the column will be lost.
- You are about to drop the column `tags` on the `hero_banner` table. All the data in the column will be lost.
- You are about to drop the column `title` on the `hero_banner` table. All the data in the column will be lost.
- Added the required column `mediaId` to the `hero_banner` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "hero_banner" DROP COLUMN "buttonContent",
DROP COLUMN "buttonLink",
DROP COLUMN "description",
DROP COLUMN "isClickable",
DROP COLUMN "tags",
DROP COLUMN "title",
ADD COLUMN "mediaId" UUID NOT NULL;
-- AddForeignKey
ALTER TABLE "hero_banner" ADD CONSTRAINT "hero_banner_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@ -1,14 +0,0 @@
/*
Warnings:
- You are about to alter the column `name` on the `collections` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(115)`.
- A unique constraint covering the columns `[slug,ownerId]` on the table `collections` will be added. If there are existing duplicate values, this will fail.
- Added the required column `slug` to the `collections` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "collections" ADD COLUMN "slug" VARCHAR(115) NOT NULL,
ALTER COLUMN "name" SET DATA TYPE VARCHAR(115);
-- CreateIndex
CREATE UNIQUE INDEX "collections_slug_ownerId_key" ON "collections"("slug", "ownerId");

View File

@ -1,33 +0,0 @@
/*
Warnings:
- You are about to drop the `_MediaCollections` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropForeignKey
ALTER TABLE "_MediaCollections" DROP CONSTRAINT "_MediaCollections_A_fkey";
-- DropForeignKey
ALTER TABLE "_MediaCollections" DROP CONSTRAINT "_MediaCollections_B_fkey";
-- DropTable
DROP TABLE "_MediaCollections";
-- CreateTable
CREATE TABLE "CollectionMedia" (
"id" UUID NOT NULL,
"collectionId" UUID NOT NULL,
"mediaId" UUID NOT NULL,
"savedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "CollectionMedia_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "CollectionMedia_collectionId_mediaId_key" ON "CollectionMedia"("collectionId", "mediaId");
-- AddForeignKey
ALTER TABLE "CollectionMedia" ADD CONSTRAINT "CollectionMedia_collectionId_fkey" FOREIGN KEY ("collectionId") REFERENCES "collections"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "CollectionMedia" ADD CONSTRAINT "CollectionMedia_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@ -0,0 +1,14 @@
/*
Warnings:
- The values [Winter,Spring,Summer,Fall] on the enum `Season` will be removed. If these variants are still used in the database, this will fail.
*/
-- AlterEnum
BEGIN;
CREATE TYPE "Season_new" AS ENUM ('winter', 'spring', 'summer', 'fall');
ALTER TABLE "medias" ALTER COLUMN "season" TYPE "Season_new" USING ("season"::text::"Season_new");
ALTER TYPE "Season" RENAME TO "Season_old";
ALTER TYPE "Season_new" RENAME TO "Season";
DROP TYPE "public"."Season_old";
COMMIT;

View File

@ -1,59 +1,48 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
//// Prisma Configuration ////
generator client { generator client {
provider = "prisma-client-js" provider = "prisma-client-js"
} }
datasource db {
provider = "postgresql"
}
generator dbml { generator dbml {
provider = "prisma-dbml-generator" provider = "prisma-dbml-generator"
} }
datasource db {
provider = "postgresql"
//// Prisma Model //// }
model Media { model Media {
id String @id @db.Uuid id String @id @db.Uuid
title String @db.Text title String
titleAlternative Json titleAlternative Json
slug String @db.Text @unique slug String @unique
malId Int? @unique malId Int? @unique
pictureMedium String @db.Text pictureMedium String
pictureLarge String @db.Text pictureLarge String
genres Genre[] @relation("MediaGenres")
country Country @default(JP) country Country @default(JP)
score Decimal @db.Decimal(4, 2) @default(0.00) score Decimal @default(0.00) @db.Decimal(4, 2)
status String status String
startAiring DateTime? startAiring DateTime?
endAiring DateTime? endAiring DateTime?
synopsis String @db.Text synopsis String
ageRating String ageRating String
mediaType MediaType mediaType MediaType
source String? source String?
studios Studio[] @relation("MediaStudios")
characters Character[] @relation("MediaCharacters")
onDraft Boolean @default(true) onDraft Boolean @default(true)
uploader User @relation("UserUploadedMedias", fields: [uploadedBy], references: [id]) season Season?
yearReleased Int @db.SmallInt
uploadedBy String @db.Uuid uploadedBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
inCollections CollectionMedia[] @relation("CollectionMedia")
episodes Episode[] @relation("MediaEpisodes")
bannerPromotion HeroBanner[] @relation("MediaBannerPromotion") bannerPromotion HeroBanner[] @relation("MediaBannerPromotion")
logs MediaLog[] @relation("MediaLogs") logs MediaLog[] @relation("MediaLogs")
episodes Episode[] @relation("MediaEpisodes") uploader User @relation("UserUploadedMedias", fields: [uploadedBy], references: [id])
reviews MediaReview[] @relation("MediaReviews") reviews MediaReview[] @relation("MediaReviews")
inCollections CollectionMedia[] @relation("CollectionMedia") characters Character[] @relation("MediaCharacters")
genres Genre[] @relation("MediaGenres")
studios Studio[] @relation("MediaStudios")
@@index([status, onDraft, deletedAt]) @@index([status, onDraft, deletedAt])
@@index([mediaType]) @@index([mediaType])
@ -66,29 +55,29 @@ model MediaLog {
id String @id @db.Uuid id String @id @db.Uuid
status MediaOperation status MediaOperation
approval Boolean @default(false) approval Boolean @default(false)
proposer User @relation("UserProposedMedias", fields: [proposedBy], references: [id])
proposedBy String @db.Uuid proposedBy String @db.Uuid
approver User @relation("UserApprovedMedias", fields: [approvedBy], references: [id])
approvedBy String @db.Uuid approvedBy String @db.Uuid
media Media @relation("MediaLogs", fields: [mediaId], references: [id])
mediaId String @db.Uuid mediaId String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
approver User @relation("UserApprovedMedias", fields: [approvedBy], references: [id])
media Media @relation("MediaLogs", fields: [mediaId], references: [id])
proposer User @relation("UserProposedMedias", fields: [proposedBy], references: [id])
@@map("media_logs") @@map("media_logs")
} }
model Genre { model Genre {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(255) name String @db.VarChar(255)
slug String @db.VarChar(255) @unique slug String @unique @db.VarChar(255)
malId Int @unique malId Int @unique
malUrl String @db.VarChar(255) malUrl String @db.VarChar(255)
creator User @relation("UserCreatedGenres", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creator User @relation("UserCreatedGenres", fields: [createdBy], references: [id])
medias Media[] @relation("MediaGenres") medias Media[] @relation("MediaGenres")
user_favourite_genres UserPreference[] @relation("UserFavoriteGenres") user_favourite_genres UserPreference[] @relation("UserFavoriteGenres")
@ -98,36 +87,36 @@ model Genre {
model Studio { model Studio {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(255) name String @db.VarChar(255)
slug String @db.VarChar(255) @unique slug String @unique @db.VarChar(255)
linkAbout String @db.Text linkAbout String
malId Int @unique malId Int @unique
logoUrl String? @db.Text logoUrl String?
creator User @relation("UserCreatedStudios", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creator User @relation("UserCreatedStudios", fields: [createdBy], references: [id])
medias Media[] @relation("MediaStudios") medias Media[] @relation("MediaStudios")
@@map("studios") @@map("studios")
} }
model Character { model Character {
id String @id@db.Uuid id String @id @db.Uuid
malId Int @unique malId Int @unique
name String name String
role CharacterRole role CharacterRole
favorites Int @default(0) favorites Int @default(0)
imageUrl String? imageUrl String?
smallImageUrl String? smallImageUrl String?
createdBy User @relation("UserCreatedCharacters", fields: [creatorId], references: [id])
creatorId String @db.Uuid creatorId String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
createdBy User @relation("UserCreatedCharacters", fields: [creatorId], references: [id])
medias Media[] @relation("MediaCharacters")
voice_actors LangVAChar[] @relation("CharVALanguage") voice_actors LangVAChar[] @relation("CharVALanguage")
medias Media[] @relation("MediaCharacters")
@@map("characters") @@map("characters")
} }
@ -136,31 +125,31 @@ model VoiceActor {
malId Int @unique malId Int @unique
name String name String
birthday DateTime? birthday DateTime?
description String? @db.Text description String?
aboutUrl String? aboutUrl String?
imageUrl String? imageUrl String?
websiteUrl String? websiteUrl String?
createdBy User @relation("UserCreatedVoiceActors", fields: [creatorId], references: [id])
creatorId String @db.Uuid creatorId String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
characters LangVAChar[] @relation("VACharLanguage") characters LangVAChar[] @relation("VACharLanguage")
createdBy User @relation("UserCreatedVoiceActors", fields: [creatorId], references: [id])
@@map("voice_actors") @@map("voice_actors")
} }
model LangVAChar { model LangVAChar {
id String @id @db.Uuid id String @id @db.Uuid
language String language String
voiceActor VoiceActor @relation("VACharLanguage", fields: [vaId], references: [id])
vaId String @db.Uuid vaId String @db.Uuid
character Character @relation("CharVALanguage", fields: [charId], references: [id])
charId String @db.Uuid charId String @db.Uuid
createdBy User @relation("UserCreatedLangVAChar", fields: [creatorId], references: [id])
creatorId String @db.Uuid creatorId String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
character Character @relation("CharVALanguage", fields: [charId], references: [id])
createdBy User @relation("UserCreatedLangVAChar", fields: [creatorId], references: [id])
voiceActor VoiceActor @relation("VACharLanguage", fields: [vaId], references: [id])
@@unique([language, vaId, charId]) @@unique([language, vaId, charId])
@@map("lang_va_char") @@map("lang_va_char")
@ -168,26 +157,25 @@ model LangVAChar {
model Episode { model Episode {
id String @id @db.Uuid id String @id @db.Uuid
media Media @relation("MediaEpisodes", fields: [mediaId], references: [id])
mediaId String @db.Uuid mediaId String @db.Uuid
episode Int episode Int
name String @db.VarChar(255) name String @db.VarChar(255)
score Decimal @db.Decimal(4,2) @default(0.00) score Decimal @default(0.00) @db.Decimal(4, 2)
pictureThumbnail String? @db.Text pictureThumbnail String?
viewed BigInt @default(0) viewed BigInt @default(0)
likes BigInt @default(0) likes BigInt @default(0)
dislikes BigInt @default(0) dislikes BigInt @default(0)
pendingUpload Boolean @default(true) pendingUpload Boolean @default(true)
uploader User @relation("UserEpisodes", fields: [uploadedBy], references: [id])
uploadedBy String @db.Uuid uploadedBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
user_likes EpisodeLike[] @relation("EpisodeLikes")
videos Video[] @relation("EpisodeVideos")
user_histories WatchHistory[] @relation("EpisodeWatchHistories")
comments Comment[] @relation("EpisodeComments") comments Comment[] @relation("EpisodeComments")
user_likes EpisodeLike[] @relation("EpisodeLikes")
media Media @relation("MediaEpisodes", fields: [mediaId], references: [id])
uploader User @relation("UserEpisodes", fields: [uploadedBy], references: [id])
videos Video[] @relation("EpisodeVideos")
user_histories WatchHistory? @relation("EpisodeWatchHistories")
@@unique([mediaId, episode]) @@unique([mediaId, episode])
@@map("episodes") @@map("episodes")
@ -195,31 +183,32 @@ model Episode {
model EpisodeLike { model EpisodeLike {
id String @id @db.Uuid id String @id @db.Uuid
user User @relation("UserEpisodeLikes", fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
session UserSession @relation("SessionEpisodeLikes", fields: [sessionId], references: [id])
sessionId String @db.Uuid sessionId String @db.Uuid
episode Episode @relation("EpisodeLikes", fields: [episodeId], references: [id])
episodeId String @db.Uuid episodeId String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
episode Episode @relation("EpisodeLikes", fields: [episodeId], references: [id])
session UserSession @relation("SessionEpisodeLikes", fields: [sessionId], references: [id])
user User @relation("UserEpisodeLikes", fields: [userId], references: [id])
@@map("episode_likes") @@map("episode_likes")
} }
model Video { model Video {
id String @id @db.Uuid id String @id @db.Uuid
episode Episode @relation("EpisodeVideos", fields: [episodeId], references: [id])
episodeId String @db.Uuid episodeId String @db.Uuid
service VideoService @relation("VideoServices", fields: [serviceId], references: [id])
serviceId String @db.Uuid serviceId String @db.Uuid
videoCode String @db.VarChar(255) videoCode String @db.VarChar(255)
thumbnailCode String? thumbnailCode String?
pendingUpload Boolean @default(true) pendingUpload Boolean @default(true)
uploader User @relation("UserVideos", fields: [uploadedBy], references: [id])
uploadedBy String @db.Uuid uploadedBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
episode Episode @relation("EpisodeVideos", fields: [episodeId], references: [id])
service VideoService @relation("VideoServices", fields: [serviceId], references: [id])
uploader User @relation("UserVideos", fields: [uploadedBy], references: [id])
@@unique([serviceId, videoCode]) @@unique([serviceId, videoCode])
@@map("videos") @@map("videos")
@ -227,21 +216,21 @@ model Video {
model VideoService { model VideoService {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(255) @unique name String @unique @db.VarChar(255)
domain String @db.VarChar(255) domain String @db.VarChar(255)
logo String? @db.Text logo String?
hexColor String @db.VarChar(10) hexColor String @db.VarChar(10)
endpointVideo String @db.Text endpointVideo String
endpointThumbnail String? @db.Text endpointThumbnail String?
endpointDownload String? endpointDownload String?
creator User @relation("UserVideoServices", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
videos Video[] @relation("VideoServices")
user_preferences UserPreference[] @relation("UserServiceDefault") user_preferences UserPreference[] @relation("UserServiceDefault")
creator User @relation("UserVideoServices", fields: [createdBy], references: [id])
videos Video[] @relation("VideoServices")
@@map("video_services") @@map("video_services")
} }
@ -249,86 +238,87 @@ model User {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(255) name String @db.VarChar(255)
username String @unique @db.VarChar(255) username String @unique @db.VarChar(255)
email String @unique @db.Text email String @unique
password String @db.Text password String
birthDate DateTime? @db.Date birthDate DateTime? @db.Date
gender UserGender? gender UserGender?
phoneCC Int? phoneCC Int?
phoneNumber Int? phoneNumber Int?
assignedRoles UserRoleAssignment[] bioProfile String?
bioProfile String? @db.Text avatar String?
avatar String? @db.Text commentBackground String?
commentBackground String? @db.Text
provider String? @db.VarChar(255) provider String? @db.VarChar(255)
providerId String? @unique @db.VarChar(255) providerId String? @unique @db.VarChar(255)
providerToken String? @db.Text providerToken String?
providerPayload Json? @db.Json providerPayload Json? @db.Json
preference UserPreference?
verifiedAt DateTime? verifiedAt DateTime?
disabledAt DateTime? disabledAt DateTime?
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
medias Media[] @relation("UserUploadedMedias")
media_proposeds MediaLog[] @relation("UserProposedMedias")
media_approveds MediaLog[] @relation("UserApprovedMedias")
genres Genre[] @relation("UserCreatedGenres")
studios Studio[] @relation("UserCreatedStudios")
characters Character[] @relation("UserCreatedCharacters") characters Character[] @relation("UserCreatedCharacters")
voice_actor VoiceActor[] @relation("UserCreatedVoiceActors")
lang_va_char LangVAChar[] @relation("UserCreatedLangVAChar")
episodes Episode[] @relation("UserEpisodes")
episode_likes EpisodeLike[] @relation("UserEpisodeLikes")
videos Video[] @relation("UserVideos")
video_services VideoService[] @relation("UserVideoServices")
create_roles UserRole[] @relation("UserCreateRoles")
notifications UserNotification[] @relation("UserNotifications")
sessions UserSession[] @relation("UserSession")
logs UserLog[] @relation("UserLogs")
collections Collection[] @relation("UserCollections") collections Collection[] @relation("UserCollections")
allowed_collections Collection[] @relation("UserSelectedSharingCollention")
watch_histories WatchHistory[] @relation("UserWatchHistories")
media_reviews MediaReview[] @relation("UserMediaReviews")
comments Comment[] @relation("UserComments")
liked_comments CommentLike[] @relation("UserCommentLikes") liked_comments CommentLike[] @relation("UserCommentLikes")
reported_comments CommentReport[] @relation("UserReportComments")
approved_comments CommentReport[] @relation("ApprovedReportComments") approved_comments CommentReport[] @relation("ApprovedReportComments")
create_languages Language[] @relation("UserCreateLanguages") reported_comments CommentReport[] @relation("UserReportComments")
comments Comment[] @relation("UserComments")
user_create_email EmailSystemAccount[] @relation("UserCreateSystemAccount") user_create_email EmailSystemAccount[] @relation("UserCreateSystemAccount")
user_emails EmailSystemHistory[] @relation("UserEmails") user_emails EmailSystemHistory[] @relation("UserEmails")
episode_likes EpisodeLike[] @relation("UserEpisodeLikes")
episodes Episode[] @relation("UserEpisodes")
genres Genre[] @relation("UserCreatedGenres")
user_hero_banner HeroBanner[] @relation("UserHeroBanner") user_hero_banner HeroBanner[] @relation("UserHeroBanner")
sys_notifications SystemNotification[] @relation("UserCreatorSystemNotifications") lang_va_char LangVAChar[] @relation("UserCreatedLangVAChar")
create_languages Language[] @relation("UserCreateLanguages")
media_approveds MediaLog[] @relation("UserApprovedMedias")
media_proposeds MediaLog[] @relation("UserProposedMedias")
medias Media[] @relation("UserUploadedMedias")
media_reviews MediaReview[] @relation("UserMediaReviews")
studios Studio[] @relation("UserCreatedStudios")
sys_logs SystemLog[] @relation("UserSystemLogs") sys_logs SystemLog[] @relation("UserSystemLogs")
sys_notifications SystemNotification[] @relation("UserCreatorSystemNotifications")
logs UserLog[] @relation("UserLogs")
notifications UserNotification[] @relation("UserNotifications")
preference UserPreference?
assignedRoles UserRoleAssignment[]
create_roles UserRole[] @relation("UserCreateRoles")
sessions UserSession[] @relation("UserSession")
video_services VideoService[] @relation("UserVideoServices")
videos Video[] @relation("UserVideos")
voice_actor VoiceActor[] @relation("UserCreatedVoiceActors")
watch_histories WatchHistory[] @relation("UserWatchHistories")
allowed_collections Collection[] @relation("UserSelectedSharingCollention")
@@map("users") @@map("users")
} }
model UserPreference { model UserPreference {
id String @id @db.Uuid id String @id @db.Uuid
user User @relation(fields: [userId], references: [id])
userId String @unique @db.Uuid userId String @unique @db.Uuid
lang Language? @relation("UserPreferenceLang", fields: [langPreference], references: [code])
langPreference String? langPreference String?
adultFiltering AdultFiltering @default(hide) adultFiltering AdultFiltering @default(hide)
adultAlert AdultAlert @default(show) adultAlert AdultAlert @default(show)
videoQuality VideoQuality @default(Q1080) videoQuality VideoQuality @default(Q1080)
serviceDefault VideoService? @relation("UserServiceDefault", fields: [serviceDefaultId], references: [id])
serviceDefaultId String? @db.Uuid serviceDefaultId String? @db.Uuid
hideContries Country[] hideContries Country[]
favoriteGenres Genre[] @relation("UserFavoriteGenres")
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
lang Language? @relation("UserPreferenceLang", fields: [langPreference], references: [code])
serviceDefault VideoService? @relation("UserServiceDefault", fields: [serviceDefaultId], references: [id])
user User @relation(fields: [userId], references: [id])
favoriteGenres Genre[] @relation("UserFavoriteGenres")
@@map("user_preferences") @@map("user_preferences")
} }
model UserRole { model UserRole {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(255) @unique name String @unique @db.VarChar(255)
description String? @db.Text description String?
primaryColor String? @db.VarChar(10) primaryColor String? @db.VarChar(10)
secondaryColor String? @db.VarChar(10) secondaryColor String? @db.VarChar(10)
pictureImage String? @db.Text pictureImage String?
badgeImage String? @db.Text badgeImage String?
isSuperadmin Boolean @default(false) isSuperadmin Boolean @default(false)
canEditMedia Boolean @default(false) canEditMedia Boolean @default(false)
canManageMedia Boolean @default(false) canManageMedia Boolean @default(false)
@ -340,24 +330,22 @@ model UserRole {
canManageUser Boolean @default(false) canManageUser Boolean @default(false)
canEditSystem Boolean @default(false) canEditSystem Boolean @default(false)
canManageSystem Boolean @default(false) canManageSystem Boolean @default(false)
creator User @relation("UserCreateRoles", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
assignedUser UserRoleAssignment[] assignedUser UserRoleAssignment[]
creator User @relation("UserCreateRoles", fields: [createdBy], references: [id])
@@map("user_roles") @@map("user_roles")
} }
model UserRoleAssignment { model UserRoleAssignment {
user User @relation(fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
role UserRole @relation(fields: [roleId], references: [id])
roleId String @db.Uuid roleId String @db.Uuid
assignmentAt DateTime @default(now()) assignmentAt DateTime @default(now())
role UserRole @relation(fields: [roleId], references: [id])
user User @relation(fields: [userId], references: [id])
@@id([userId, roleId]) @@id([userId, roleId])
@@map("user_role_assignments") @@map("user_role_assignments")
@ -366,23 +354,23 @@ model UserRoleAssignment {
model UserNotification { model UserNotification {
id String @id @db.Uuid id String @id @db.Uuid
title String @db.VarChar(255) title String @db.VarChar(255)
content String @db.Text content String
picture String @db.Text picture String
state UserNotificationState state UserNotificationState
ctaLink String @db.Text ctaLink String
user User @relation("UserNotifications", fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
isReaded Boolean @default(false) isReaded Boolean @default(false)
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
user User @relation("UserNotifications", fields: [userId], references: [id])
@@map("user_notifications") @@map("user_notifications")
} }
model UserSession { model UserSession {
id String @id @db.Uuid id String @id @db.Uuid
isAuthenticated Boolean @default(false) isAuthenticated Boolean @default(false)
user User @relation("UserSession", fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
deviceType String @db.VarChar(255) deviceType String @db.VarChar(255)
deviceOs String @db.VarChar(255) deviceOs String @db.VarChar(255)
@ -394,9 +382,9 @@ model UserSession {
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
logs UserLog[] @relation("UserSessionLogs")
episode_likes EpisodeLike[] @relation("SessionEpisodeLikes") episode_likes EpisodeLike[] @relation("SessionEpisodeLikes")
logs UserLog[] @relation("UserSessionLogs")
user User @relation("UserSession", fields: [userId], references: [id])
watch_histories WatchHistory[] @relation("SessionWatchHistories") watch_histories WatchHistory[] @relation("SessionWatchHistories")
@@index([userId, isAuthenticated, deletedAt]) @@index([userId, isAuthenticated, deletedAt])
@ -406,132 +394,138 @@ model UserSession {
model UserLog { model UserLog {
id String @id @db.Uuid id String @id @db.Uuid
title String @db.VarChar(255) title String @db.VarChar(255)
notes String @db.Text notes String
user User @relation("UserLogs", fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
session UserSession @relation("UserSessionLogs", fields: [sessionId], references: [id])
sessionId String @db.Uuid sessionId String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
session UserSession @relation("UserSessionLogs", fields: [sessionId], references: [id])
user User @relation("UserLogs", fields: [userId], references: [id])
@@map("user_logs") @@map("user_logs")
} }
model Collection { model Collection {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(115) name String @db.VarChar(115)
slug String @db.VarChar(115)
owner User @relation("UserCollections", fields: [ownerId], references: [id])
ownerId String @db.Uuid ownerId String @db.Uuid
accessStatus AccessStatus @default(private) accessStatus AccessStatus @default(private)
password String? @db.VarChar(255) password String? @db.VarChar(255)
usersAllowed User[] @relation("UserSelectedSharingCollention")
accessScope AccessScope @default(viewer) accessScope AccessScope @default(viewer)
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
slug String @db.VarChar(115)
media_saved CollectionMedia[] @relation("CollectionMedia") media_saved CollectionMedia[] @relation("CollectionMedia")
owner User @relation("UserCollections", fields: [ownerId], references: [id])
usersAllowed User[] @relation("UserSelectedSharingCollention")
@@unique([slug, ownerId]) @@unique([slug, ownerId])
@@map("collections") @@map("collections")
} }
model CollectionMedia { model CollectionMedia {
id String @id @db.Uuid id String @id @db.Uuid
collection Collection @relation("CollectionMedia", fields: [collectionId], references: [id])
collectionId String @db.Uuid collectionId String @db.Uuid
media Media @relation("CollectionMedia", fields: [mediaId], references: [id])
mediaId String @db.Uuid mediaId String @db.Uuid
savedAt DateTime @default(now()) savedAt DateTime @default(now())
collection Collection @relation("CollectionMedia", fields: [collectionId], references: [id])
media Media @relation("CollectionMedia", fields: [mediaId], references: [id])
@@unique([collectionId, mediaId]) @@unique([collectionId, mediaId])
} }
model WatchHistory { model WatchHistory {
id String @id @db.Uuid id String @id @db.Uuid
episode Episode @relation("EpisodeWatchHistories", fields: [id], references: [id])
episodeId String @db.Uuid episodeId String @db.Uuid
user User @relation("UserWatchHistories", fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
session UserSession @relation("SessionWatchHistories", fields: [sessionId], references: [id])
sessionId String @db.Uuid sessionId String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
episode Episode @relation("EpisodeWatchHistories", fields: [id], references: [id])
session UserSession @relation("SessionWatchHistories", fields: [sessionId], references: [id])
user User @relation("UserWatchHistories", fields: [userId], references: [id])
@@map("watch_histories") @@map("watch_histories")
} }
model MediaReview { model MediaReview {
id String @id @db.Uuid id String @id @db.Uuid
media Media @relation("MediaReviews", fields: [mediaId], references:[id])
mediaId String @db.Uuid mediaId String @db.Uuid
rating Int rating Int
title String @db.VarChar(255) title String @db.VarChar(255)
text String @db.Text text String
reaction MediaReviewReaction reaction MediaReviewReaction
creator User @relation("UserMediaReviews", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creator User @relation("UserMediaReviews", fields: [createdBy], references: [id])
media Media @relation("MediaReviews", fields: [mediaId], references: [id])
@@map("movie_reviews") @@map("movie_reviews")
} }
model Comment { model Comment {
id String @id @db.Uuid id String @id @db.Uuid
episode Episode @relation("EpisodeComments", fields: [episodeId], references: [id])
episodeId String @db.Uuid episodeId String @db.Uuid
text String @db.Text text String
isParent Boolean @default(false) isParent Boolean @default(false)
parent Comment? @relation("ParentReplyComments", fields: [parentId], references: [id])
parentId String? @db.Uuid parentId String? @db.Uuid
user User @relation("UserComments", fields: [userId], references: [id])
userId String @db.Uuid userId String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
replies Comment[] @relation("ParentReplyComments")
likes CommentLike[] @relation("CommentLikes") likes CommentLike[] @relation("CommentLikes")
episode Episode @relation("EpisodeComments", fields: [episodeId], references: [id])
parent Comment? @relation("ParentReplyComments", fields: [parentId], references: [id])
replies Comment[] @relation("ParentReplyComments")
user User @relation("UserComments", fields: [userId], references: [id])
@@map("comments") @@map("comments")
} }
model CommentLike { model CommentLike {
id String @id @db.Uuid id String @id @db.Uuid
comment Comment @relation("CommentLikes", fields: [commentId], references: [id])
commentId String @db.Uuid commentId String @db.Uuid
user User @relation("UserCommentLikes", fields: [userLiked], references: [id])
userLiked String @db.Uuid userLiked String @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
comment Comment @relation("CommentLikes", fields: [commentId], references: [id])
user User @relation("UserCommentLikes", fields: [userLiked], references: [id])
@@map("comment_likes") @@map("comment_likes")
} }
model CommentReport { model CommentReport {
id String @id @db.Uuid id String @id @db.Uuid
reporter User @relation("UserReportComments", fields: [userReporter], references: [id])
userReporter String @db.Uuid userReporter String @db.Uuid
commentReported String @db.Uuid commentReported String @db.Uuid
isSupervisorReport Boolean @default(false) isSupervisorReport Boolean @default(false)
reason ReportReason reason ReportReason
status ReportStatus status ReportStatus
description String @db.VarChar(255) description String @db.VarChar(255)
approver User? @relation("ApprovedReportComments", fields: [approvedBy], references: [id])
approvedBy String? @db.Uuid approvedBy String? @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
approver User? @relation("ApprovedReportComments", fields: [approvedBy], references: [id])
reporter User @relation("UserReportComments", fields: [userReporter], references: [id])
@@map("comment_reports") @@map("comment_reports")
} }
model Language { model Language {
id String @id @db.Uuid id String @id @db.Uuid
name String @db.VarChar(255) name String @db.VarChar(255)
code String @db.VarChar(5) @unique code String @unique @db.VarChar(5)
countryFlag String @db.VarChar(10) countryFlag String @db.VarChar(10)
fileLocation String @db.Text fileLocation String
creator User @relation("UserCreateLanguages", fields: [craetedBy], references: [id])
craetedBy String @db.Uuid craetedBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creator User @relation("UserCreateLanguages", fields: [craetedBy], references: [id])
user_used UserPreference[] @relation("UserPreferenceLang") user_used UserPreference[] @relation("UserPreferenceLang")
@@map("languages") @@map("languages")
} }
@ -545,52 +539,56 @@ model EmailSystemAccount {
username String @unique @db.VarChar(255) username String @unique @db.VarChar(255)
password String @db.VarChar(255) password String @db.VarChar(255)
purpose EmailPorpose purpose EmailPorpose
creator User @relation("UserCreateSystemAccount", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creator User @relation("UserCreateSystemAccount", fields: [createdBy], references: [id])
@@map("email_system_accounts") @@map("email_system_accounts")
} }
model EmailSystemHistory { model EmailSystemHistory {
id String @id @db.Uuid id String @id @db.Uuid
purpose EmailPorpose purpose EmailPorpose
fromEmail String @db.Text fromEmail String
toEmail String @db.Text toEmail String
user User @relation("UserEmails", fields: [userRelated], references: [id])
userRelated String @db.Uuid userRelated String @db.Uuid
title String @db.VarChar(255) title String @db.VarChar(255)
htmlContent String @db.Text htmlContent String
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
user User @relation("UserEmails", fields: [userRelated], references: [id])
@@map("email_system_histories") @@map("email_system_histories")
} }
model HeroBanner { model HeroBanner {
id String @id @db.Uuid id String @id @db.Uuid
orderPriority Int? @unique orderPriority Int? @unique
mediaId String @db.Uuid imageUrl String?
media Media @relation("MediaBannerPromotion", fields: [mediaId], references: [id])
imageUrl String? @db.Text
startDate DateTime startDate DateTime
endDate DateTime endDate DateTime
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creatorId String @db.Uuid creatorId String @db.Uuid
mediaId String @db.Uuid
createdBy User @relation("UserHeroBanner", fields: [creatorId], references: [id]) createdBy User @relation("UserHeroBanner", fields: [creatorId], references: [id])
media Media @relation("MediaBannerPromotion", fields: [mediaId], references: [id])
@@map("hero_banner") @@map("hero_banner")
} }
model SystemPreference { model SystemPreference {
id String @id @db.Uuid id String @id @db.Uuid
key String @db.VarChar(225) @unique key String @unique @db.VarChar(225)
value String @db.VarChar(225) value String @db.VarChar(225)
description String @db.Text description String
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
@@map("system_preferences") @@map("system_preferences")
} }
@ -598,35 +596,30 @@ model SystemNotification {
id String @id @db.Uuid id String @id @db.Uuid
type TypeSystemNotification type TypeSystemNotification
componentName String? @db.VarChar(255) componentName String? @db.VarChar(255)
popupImage String? @db.Text popupImage String?
titleToast String? @db.VarChar(255) titleToast String? @db.VarChar(255)
contentToast String? @db.Text contentToast String?
creator User @relation("UserCreatorSystemNotifications", fields: [createdBy], references: [id])
createdBy String @db.Uuid createdBy String @db.Uuid
deletedAt DateTime? deletedAt DateTime?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
creator User @relation("UserCreatorSystemNotifications", fields: [createdBy], references: [id])
@@map("system_notifications") @@map("system_notifications")
} }
model SystemLog { model SystemLog {
id String @id @db.Uuid id String @id @db.Uuid
title String @db.VarChar(255) title String @db.VarChar(255)
notes String @db.Text notes String
user User? @relation("UserSystemLogs", fields: [relatedUser], references: [id])
relatedUser String? @db.Uuid relatedUser String? @db.Uuid
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt updatedAt DateTime @default(now()) @updatedAt
user User? @relation("UserSystemLogs", fields: [relatedUser], references: [id])
@@map("system_logs") @@map("system_logs")
} }
//// Prisma Enum Values ////
// Media Enum
enum MediaType { enum MediaType {
TV TV
ONA ONA
@ -635,6 +628,7 @@ enum MediaType {
Special Special
Music Music
} }
enum Country { enum Country {
JP @map("Japanese") JP @map("Japanese")
EN @map("English") EN @map("English")
@ -642,35 +636,40 @@ enum Country {
KR @map("Korea") KR @map("Korea")
} }
// Character Enum enum Season {
winter
spring
summer
fall
}
enum CharacterRole { enum CharacterRole {
Main Main
Supporting Supporting
} }
// MediaLog Enum
enum MediaOperation { enum MediaOperation {
create create
update update
delete delete
} }
// User Enum
enum UserGender { enum UserGender {
male male
female female
} }
// UserPreference Enum
enum AdultFiltering { enum AdultFiltering {
hide hide
show show
explicit explicit
} }
enum AdultAlert { enum AdultAlert {
hide hide
show show
} }
enum VideoQuality { enum VideoQuality {
Q2160 Q2160
Q1440 Q1440
@ -682,19 +681,18 @@ enum VideoQuality {
Q144 Q144
} }
// userNotification Enum
enum UserNotificationState { enum UserNotificationState {
info info
warning warning
danger danger
} }
// CommentReport Enum
enum ReportStatus { enum ReportStatus {
pending pending
resolved resolved
rejected rejected
} }
enum ReportReason { enum ReportReason {
sexualize sexualize
violent violent
@ -706,19 +704,18 @@ enum ReportReason {
other other
} }
// Collection Enum
enum AccessStatus { enum AccessStatus {
private private
selected selected
protected protected
public public
} }
enum AccessScope { enum AccessScope {
viewer viewer
editor editor
} }
// MediaReview Enum
enum MediaReviewReaction { enum MediaReviewReaction {
angry angry
sad sad
@ -730,7 +727,6 @@ enum MediaReviewReaction {
disappointed disappointed
} }
// EmailSystemHistory Enum
enum EmailPorpose { enum EmailPorpose {
forgot_password forgot_password
account_activation account_activation
@ -738,7 +734,6 @@ enum EmailPorpose {
subscribtion subscribtion
} }
// systemNotification Enum
enum TypeSystemNotification { enum TypeSystemNotification {
component component
popup popup