Compare commits
8 Commits
16d8c00d75
...
refactor-d
| Author | SHA1 | Date | |
|---|---|---|---|
| 628ff9aeb7 | |||
| e10c57da1c | |||
| a1e059a99b | |||
| d0782710a5 | |||
| 1e34793d08 | |||
| 953530a119 | |||
| c754e7f039 | |||
| 6556ac8354 |
5812
prisma/diagram.json
Normal file
5812
prisma/diagram.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,903 +0,0 @@
|
||||
-- CreateSchema
|
||||
CREATE SCHEMA IF NOT EXISTS "public";
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "MediaType" AS ENUM ('TV', 'ONA', 'OVA', 'Movie', 'Special', 'Music');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Country" AS ENUM ('Japanese', 'English', 'Indonesia', 'Korea');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Season" AS ENUM ('Winter', 'Spring', 'Summer', 'Fall');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "CharacterRole" AS ENUM ('Main', 'Supporting');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "MediaOperation" AS ENUM ('create', 'update', 'delete');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "UserGender" AS ENUM ('male', 'female');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "AdultFiltering" AS ENUM ('hide', 'show', 'explicit');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "AdultAlert" AS ENUM ('hide', 'show');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "VideoQuality" AS ENUM ('Q2160', 'Q1440', 'Q1080', 'Q720', 'Q480', 'Q360', 'Q240', 'Q144');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "UserNotificationState" AS ENUM ('info', 'warning', 'danger');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "ReportStatus" AS ENUM ('pending', 'resolved', 'rejected');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "ReportReason" AS ENUM ('sexualize', 'violent', 'explicit', 'hateful', 'political', 'racist', 'spam', 'other');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "AccessStatus" AS ENUM ('private', 'selected', 'protected', 'public');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "AccessScope" AS ENUM ('viewer', 'editor');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "MediaReviewReaction" AS ENUM ('angry', 'sad', 'awesome', 'happy', 'sleepy', 'annoyed', 'disgusting', 'disappointed');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "EmailPorpose" AS ENUM ('forgot_password', 'account_activation', 'account_notification', 'subscribtion');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TypeSystemNotification" AS ENUM ('component', 'popup', 'toast');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "medias" (
|
||||
"id" UUID NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"titleAlternative" JSONB NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"malId" INTEGER,
|
||||
"pictureMedium" TEXT NOT NULL,
|
||||
"pictureLarge" TEXT NOT NULL,
|
||||
"country" "Country" NOT NULL DEFAULT 'Japanese',
|
||||
"score" DECIMAL(4,2) NOT NULL DEFAULT 0.00,
|
||||
"status" TEXT NOT NULL,
|
||||
"startAiring" TIMESTAMP(3),
|
||||
"endAiring" TIMESTAMP(3),
|
||||
"synopsis" TEXT NOT NULL,
|
||||
"ageRating" TEXT NOT NULL,
|
||||
"mediaType" "MediaType" NOT NULL,
|
||||
"source" TEXT,
|
||||
"onDraft" BOOLEAN NOT NULL DEFAULT true,
|
||||
"uploadedBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" 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")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "media_logs" (
|
||||
"id" UUID NOT NULL,
|
||||
"status" "MediaOperation" NOT NULL,
|
||||
"approval" BOOLEAN NOT NULL DEFAULT false,
|
||||
"proposedBy" UUID NOT NULL,
|
||||
"approvedBy" UUID NOT NULL,
|
||||
"mediaId" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "media_logs_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "genres" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"slug" VARCHAR(255) NOT NULL,
|
||||
"malId" INTEGER NOT NULL,
|
||||
"malUrl" VARCHAR(255) NOT NULL,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "genres_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "studios" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"slug" VARCHAR(255) NOT NULL,
|
||||
"linkAbout" TEXT NOT NULL,
|
||||
"malId" INTEGER NOT NULL,
|
||||
"logoUrl" TEXT,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "studios_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "characters" (
|
||||
"id" UUID NOT NULL,
|
||||
"malId" INTEGER NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"role" "CharacterRole" NOT NULL,
|
||||
"favorites" INTEGER NOT NULL DEFAULT 0,
|
||||
"imageUrl" TEXT,
|
||||
"smallImageUrl" TEXT,
|
||||
"creatorId" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "characters_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "voice_actors" (
|
||||
"id" UUID NOT NULL,
|
||||
"malId" INTEGER NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"birthday" TIMESTAMP(3),
|
||||
"description" TEXT,
|
||||
"aboutUrl" TEXT,
|
||||
"imageUrl" TEXT,
|
||||
"websiteUrl" TEXT,
|
||||
"creatorId" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "voice_actors_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "lang_va_char" (
|
||||
"id" UUID NOT NULL,
|
||||
"language" TEXT NOT NULL,
|
||||
"vaId" UUID NOT NULL,
|
||||
"charId" UUID NOT NULL,
|
||||
"creatorId" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "lang_va_char_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "episodes" (
|
||||
"id" UUID NOT NULL,
|
||||
"mediaId" UUID NOT NULL,
|
||||
"episode" INTEGER NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"score" DECIMAL(4,2) NOT NULL DEFAULT 0.00,
|
||||
"pictureThumbnail" TEXT,
|
||||
"viewed" BIGINT NOT NULL DEFAULT 0,
|
||||
"likes" BIGINT NOT NULL DEFAULT 0,
|
||||
"dislikes" BIGINT NOT NULL DEFAULT 0,
|
||||
"pendingUpload" BOOLEAN NOT NULL DEFAULT true,
|
||||
"uploadedBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "episodes_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "episode_likes" (
|
||||
"id" UUID NOT NULL,
|
||||
"userId" UUID NOT NULL,
|
||||
"sessionId" UUID NOT NULL,
|
||||
"episodeId" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "episode_likes_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "videos" (
|
||||
"id" UUID NOT NULL,
|
||||
"episodeId" UUID NOT NULL,
|
||||
"serviceId" UUID NOT NULL,
|
||||
"videoCode" VARCHAR(255) NOT NULL,
|
||||
"thumbnailCode" TEXT,
|
||||
"pendingUpload" BOOLEAN NOT NULL DEFAULT true,
|
||||
"uploadedBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "videos_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "video_services" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"domain" VARCHAR(255) NOT NULL,
|
||||
"logo" TEXT,
|
||||
"hexColor" VARCHAR(10) NOT NULL,
|
||||
"endpointVideo" TEXT NOT NULL,
|
||||
"endpointThumbnail" TEXT,
|
||||
"endpointDownload" TEXT,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "video_services_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "users" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"username" VARCHAR(255) NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"birthDate" DATE,
|
||||
"gender" "UserGender",
|
||||
"phoneCC" INTEGER,
|
||||
"phoneNumber" INTEGER,
|
||||
"bioProfile" TEXT,
|
||||
"avatar" TEXT,
|
||||
"commentBackground" TEXT,
|
||||
"provider" VARCHAR(255),
|
||||
"providerId" VARCHAR(255),
|
||||
"providerToken" TEXT,
|
||||
"providerPayload" JSON,
|
||||
"verifiedAt" TIMESTAMP(3),
|
||||
"disabledAt" TIMESTAMP(3),
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_preferences" (
|
||||
"id" UUID NOT NULL,
|
||||
"userId" UUID NOT NULL,
|
||||
"langPreference" TEXT,
|
||||
"adultFiltering" "AdultFiltering" NOT NULL DEFAULT 'hide',
|
||||
"adultAlert" "AdultAlert" NOT NULL DEFAULT 'show',
|
||||
"videoQuality" "VideoQuality" NOT NULL DEFAULT 'Q1080',
|
||||
"serviceDefaultId" UUID,
|
||||
"hideContries" "Country"[],
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "user_preferences_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_roles" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"description" TEXT,
|
||||
"primaryColor" VARCHAR(10),
|
||||
"secondaryColor" VARCHAR(10),
|
||||
"pictureImage" TEXT,
|
||||
"badgeImage" TEXT,
|
||||
"isSuperadmin" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canEditMedia" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canManageMedia" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canEditEpisodes" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canManageEpisodes" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canEditComment" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canManageComment" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canEditUser" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canManageUser" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canEditSystem" BOOLEAN NOT NULL DEFAULT false,
|
||||
"canManageSystem" BOOLEAN NOT NULL DEFAULT false,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "user_roles_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_role_assignments" (
|
||||
"userId" UUID NOT NULL,
|
||||
"roleId" UUID NOT NULL,
|
||||
"assignmentAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "user_role_assignments_pkey" PRIMARY KEY ("userId","roleId")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_notifications" (
|
||||
"id" UUID NOT NULL,
|
||||
"title" VARCHAR(255) NOT NULL,
|
||||
"content" TEXT NOT NULL,
|
||||
"picture" TEXT NOT NULL,
|
||||
"state" "UserNotificationState" NOT NULL,
|
||||
"ctaLink" TEXT NOT NULL,
|
||||
"userId" UUID NOT NULL,
|
||||
"isReaded" BOOLEAN NOT NULL DEFAULT false,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "user_notifications_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_sessions" (
|
||||
"id" UUID NOT NULL,
|
||||
"isAuthenticated" BOOLEAN NOT NULL DEFAULT false,
|
||||
"userId" UUID NOT NULL,
|
||||
"deviceType" VARCHAR(255) NOT NULL,
|
||||
"deviceOs" VARCHAR(255) NOT NULL,
|
||||
"deviceIp" VARCHAR(255) NOT NULL,
|
||||
"browser" VARCHAR(255) NOT NULL,
|
||||
"isOnline" BOOLEAN NOT NULL DEFAULT false,
|
||||
"lastOnline" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"validUntil" TIMESTAMP(3) NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "user_sessions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_logs" (
|
||||
"id" UUID NOT NULL,
|
||||
"title" VARCHAR(255) NOT NULL,
|
||||
"notes" TEXT NOT NULL,
|
||||
"userId" UUID NOT NULL,
|
||||
"sessionId" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "user_logs_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "collections" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(115) NOT NULL,
|
||||
"ownerId" UUID NOT NULL,
|
||||
"accessStatus" "AccessStatus" NOT NULL DEFAULT 'private',
|
||||
"password" VARCHAR(255),
|
||||
"accessScope" "AccessScope" NOT NULL DEFAULT 'viewer',
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" 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")
|
||||
);
|
||||
|
||||
-- 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
|
||||
CREATE TABLE "watch_histories" (
|
||||
"id" UUID NOT NULL,
|
||||
"episodeId" UUID NOT NULL,
|
||||
"userId" UUID NOT NULL,
|
||||
"sessionId" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "watch_histories_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "movie_reviews" (
|
||||
"id" UUID NOT NULL,
|
||||
"mediaId" UUID NOT NULL,
|
||||
"rating" INTEGER NOT NULL,
|
||||
"title" VARCHAR(255) NOT NULL,
|
||||
"text" TEXT NOT NULL,
|
||||
"reaction" "MediaReviewReaction" NOT NULL,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "movie_reviews_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "comments" (
|
||||
"id" UUID NOT NULL,
|
||||
"episodeId" UUID NOT NULL,
|
||||
"text" TEXT NOT NULL,
|
||||
"isParent" BOOLEAN NOT NULL DEFAULT false,
|
||||
"parentId" UUID,
|
||||
"userId" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "comments_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "comment_likes" (
|
||||
"id" UUID NOT NULL,
|
||||
"commentId" UUID NOT NULL,
|
||||
"userLiked" UUID NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "comment_likes_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "comment_reports" (
|
||||
"id" UUID NOT NULL,
|
||||
"userReporter" UUID NOT NULL,
|
||||
"commentReported" UUID NOT NULL,
|
||||
"isSupervisorReport" BOOLEAN NOT NULL DEFAULT false,
|
||||
"reason" "ReportReason" NOT NULL,
|
||||
"status" "ReportStatus" NOT NULL,
|
||||
"description" VARCHAR(255) NOT NULL,
|
||||
"approvedBy" UUID,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "comment_reports_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "languages" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" VARCHAR(255) NOT NULL,
|
||||
"code" VARCHAR(5) NOT NULL,
|
||||
"countryFlag" VARCHAR(10) NOT NULL,
|
||||
"fileLocation" TEXT NOT NULL,
|
||||
"craetedBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "languages_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "email_system_accounts" (
|
||||
"id" UUID NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"host" VARCHAR(255) NOT NULL,
|
||||
"port" INTEGER NOT NULL,
|
||||
"secure" BOOLEAN NOT NULL,
|
||||
"email" VARCHAR(255) NOT NULL,
|
||||
"username" VARCHAR(255) NOT NULL,
|
||||
"password" VARCHAR(255) NOT NULL,
|
||||
"purpose" "EmailPorpose" NOT NULL,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "email_system_accounts_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "email_system_histories" (
|
||||
"id" UUID NOT NULL,
|
||||
"purpose" "EmailPorpose" NOT NULL,
|
||||
"fromEmail" TEXT NOT NULL,
|
||||
"toEmail" TEXT NOT NULL,
|
||||
"userRelated" UUID NOT NULL,
|
||||
"title" VARCHAR(255) NOT NULL,
|
||||
"htmlContent" TEXT NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "email_system_histories_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "hero_banner" (
|
||||
"id" UUID NOT NULL,
|
||||
"orderPriority" INTEGER,
|
||||
"imageUrl" TEXT,
|
||||
"startDate" TIMESTAMP(3) NOT NULL,
|
||||
"endDate" TIMESTAMP(3) NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"creatorId" UUID NOT NULL,
|
||||
"mediaId" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "hero_banner_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "system_preferences" (
|
||||
"id" UUID NOT NULL,
|
||||
"key" VARCHAR(225) NOT NULL,
|
||||
"value" VARCHAR(225) NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "system_preferences_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "system_notifications" (
|
||||
"id" UUID NOT NULL,
|
||||
"type" "TypeSystemNotification" NOT NULL,
|
||||
"componentName" VARCHAR(255),
|
||||
"popupImage" TEXT,
|
||||
"titleToast" VARCHAR(255),
|
||||
"contentToast" TEXT,
|
||||
"createdBy" UUID NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "system_notifications_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "system_logs" (
|
||||
"id" UUID NOT NULL,
|
||||
"title" VARCHAR(255) NOT NULL,
|
||||
"notes" TEXT NOT NULL,
|
||||
"relatedUser" UUID,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "system_logs_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "_MediaStudios" (
|
||||
"A" UUID NOT NULL,
|
||||
"B" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "_MediaStudios_AB_pkey" PRIMARY KEY ("A","B")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "_MediaGenres" (
|
||||
"A" UUID NOT NULL,
|
||||
"B" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "_MediaGenres_AB_pkey" PRIMARY KEY ("A","B")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "_UserFavoriteGenres" (
|
||||
"A" UUID NOT NULL,
|
||||
"B" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "_UserFavoriteGenres_AB_pkey" PRIMARY KEY ("A","B")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "_MediaCharacters" (
|
||||
"A" UUID NOT NULL,
|
||||
"B" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "_MediaCharacters_AB_pkey" PRIMARY KEY ("A","B")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "_UserSelectedSharingCollention" (
|
||||
"A" UUID NOT NULL,
|
||||
"B" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "_UserSelectedSharingCollention_AB_pkey" PRIMARY KEY ("A","B")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "medias_slug_key" ON "medias"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "medias_malId_key" ON "medias"("malId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "medias_status_onDraft_deletedAt_idx" ON "medias"("status", "onDraft", "deletedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "medias_mediaType_idx" ON "medias"("mediaType");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "medias_uploadedBy_idx" ON "medias"("uploadedBy");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "medias_createdAt_idx" ON "medias"("createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "genres_slug_key" ON "genres"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "genres_malId_key" ON "genres"("malId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "studios_slug_key" ON "studios"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "studios_malId_key" ON "studios"("malId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "characters_malId_key" ON "characters"("malId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "voice_actors_malId_key" ON "voice_actors"("malId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "lang_va_char_language_vaId_charId_key" ON "lang_va_char"("language", "vaId", "charId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "episodes_mediaId_episode_key" ON "episodes"("mediaId", "episode");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "videos_serviceId_videoCode_key" ON "videos"("serviceId", "videoCode");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "video_services_name_key" ON "video_services"("name");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_username_key" ON "users"("username");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_providerId_key" ON "users"("providerId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "user_preferences_userId_key" ON "user_preferences"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "user_roles_name_key" ON "user_roles"("name");
|
||||
|
||||
-- CreateIndex
|
||||
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
|
||||
CREATE UNIQUE INDEX "languages_code_key" ON "languages"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "email_system_accounts_name_key" ON "email_system_accounts"("name");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "email_system_accounts_email_key" ON "email_system_accounts"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "email_system_accounts_username_key" ON "email_system_accounts"("username");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "hero_banner_orderPriority_key" ON "hero_banner"("orderPriority");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "system_preferences_key_key" ON "system_preferences"("key");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "_MediaStudios_B_index" ON "_MediaStudios"("B");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "_MediaGenres_B_index" ON "_MediaGenres"("B");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "_UserFavoriteGenres_B_index" ON "_UserFavoriteGenres"("B");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "_MediaCharacters_B_index" ON "_MediaCharacters"("B");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "_UserSelectedSharingCollention_B_index" ON "_UserSelectedSharingCollention"("B");
|
||||
|
||||
-- AddForeignKey
|
||||
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_approvedBy_fkey" FOREIGN KEY ("approvedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
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
|
||||
ALTER TABLE "genres" ADD CONSTRAINT "genres_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "studios" ADD CONSTRAINT "studios_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "characters" ADD CONSTRAINT "characters_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
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_charId_fkey" FOREIGN KEY ("charId") REFERENCES "characters"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- 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
|
||||
ALTER TABLE "episodes" ADD CONSTRAINT "episodes_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "medias"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "episodes" ADD CONSTRAINT "episodes_uploadedBy_fkey" FOREIGN KEY ("uploadedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "episode_likes" ADD CONSTRAINT "episode_likes_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "videos" ADD CONSTRAINT "videos_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "videos" ADD CONSTRAINT "videos_serviceId_fkey" FOREIGN KEY ("serviceId") REFERENCES "video_services"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "videos" ADD CONSTRAINT "videos_uploadedBy_fkey" FOREIGN KEY ("uploadedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
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_langPreference_fkey" FOREIGN KEY ("langPreference") REFERENCES "languages"("code") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "user_notifications" ADD CONSTRAINT "user_notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "user_sessions" ADD CONSTRAINT "user_sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "user_logs" ADD CONSTRAINT "user_logs_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "user_logs" ADD CONSTRAINT "user_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "collections" ADD CONSTRAINT "collections_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- 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;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_id_fkey" FOREIGN KEY ("id") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "user_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "watch_histories" ADD CONSTRAINT "watch_histories_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
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
|
||||
ALTER TABLE "comments" ADD CONSTRAINT "comments_episodeId_fkey" FOREIGN KEY ("episodeId") REFERENCES "episodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "comments" ADD CONSTRAINT "comments_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "comments"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "comments" ADD CONSTRAINT "comments_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "comment_likes" ADD CONSTRAINT "comment_likes_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "comments"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "comment_likes" ADD CONSTRAINT "comment_likes_userLiked_fkey" FOREIGN KEY ("userLiked") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "comment_reports" ADD CONSTRAINT "comment_reports_approvedBy_fkey" FOREIGN KEY ("approvedBy") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "comment_reports" ADD CONSTRAINT "comment_reports_userReporter_fkey" FOREIGN KEY ("userReporter") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "languages" ADD CONSTRAINT "languages_craetedBy_fkey" FOREIGN KEY ("craetedBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "email_system_accounts" ADD CONSTRAINT "email_system_accounts_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "email_system_histories" ADD CONSTRAINT "email_system_histories_userRelated_fkey" FOREIGN KEY ("userRelated") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
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
|
||||
ALTER TABLE "system_notifications" ADD CONSTRAINT "system_notifications_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "system_logs" ADD CONSTRAINT "system_logs_relatedUser_fkey" FOREIGN KEY ("relatedUser") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_MediaStudios" ADD CONSTRAINT "_MediaStudios_A_fkey" FOREIGN KEY ("A") REFERENCES "medias"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_MediaStudios" ADD CONSTRAINT "_MediaStudios_B_fkey" FOREIGN KEY ("B") REFERENCES "studios"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_MediaGenres" ADD CONSTRAINT "_MediaGenres_A_fkey" FOREIGN KEY ("A") REFERENCES "genres"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_MediaGenres" ADD CONSTRAINT "_MediaGenres_B_fkey" FOREIGN KEY ("B") REFERENCES "medias"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_UserFavoriteGenres" ADD CONSTRAINT "_UserFavoriteGenres_A_fkey" FOREIGN KEY ("A") REFERENCES "genres"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_UserFavoriteGenres" ADD CONSTRAINT "_UserFavoriteGenres_B_fkey" FOREIGN KEY ("B") REFERENCES "user_preferences"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_MediaCharacters" ADD CONSTRAINT "_MediaCharacters_A_fkey" FOREIGN KEY ("A") REFERENCES "characters"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_MediaCharacters" ADD CONSTRAINT "_MediaCharacters_B_fkey" FOREIGN KEY ("B") REFERENCES "medias"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_UserSelectedSharingCollention" ADD CONSTRAINT "_UserSelectedSharingCollention_A_fkey" FOREIGN KEY ("A") REFERENCES "collections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "_UserSelectedSharingCollention" ADD CONSTRAINT "_UserSelectedSharingCollention_B_fkey" FOREIGN KEY ("B") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
/*
|
||||
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;
|
||||
@ -1,3 +0,0 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "postgresql"
|
||||
@ -9,733 +9,3 @@ generator dbml {
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
}
|
||||
|
||||
model Media {
|
||||
id String @id @db.Uuid
|
||||
title String
|
||||
titleAlternative Json
|
||||
slug String @unique
|
||||
malId Int? @unique
|
||||
pictureMedium String
|
||||
pictureLarge String
|
||||
country Country @default(JP)
|
||||
score Decimal @default(0.00) @db.Decimal(4, 2)
|
||||
status String
|
||||
startAiring DateTime?
|
||||
endAiring DateTime?
|
||||
synopsis String
|
||||
ageRating String
|
||||
mediaType MediaType
|
||||
source String?
|
||||
onDraft Boolean @default(true)
|
||||
season Season?
|
||||
yearReleased Int @db.SmallInt
|
||||
uploadedBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
inCollections CollectionMedia[] @relation("CollectionMedia")
|
||||
episodes Episode[] @relation("MediaEpisodes")
|
||||
bannerPromotion HeroBanner[] @relation("MediaBannerPromotion")
|
||||
logs MediaLog[] @relation("MediaLogs")
|
||||
uploader User @relation("UserUploadedMedias", fields: [uploadedBy], references: [id])
|
||||
reviews MediaReview[] @relation("MediaReviews")
|
||||
characters Character[] @relation("MediaCharacters")
|
||||
genres Genre[] @relation("MediaGenres")
|
||||
studios Studio[] @relation("MediaStudios")
|
||||
|
||||
@@index([status, onDraft, deletedAt])
|
||||
@@index([mediaType])
|
||||
@@index([uploadedBy])
|
||||
@@index([createdAt])
|
||||
@@map("medias")
|
||||
}
|
||||
|
||||
model MediaLog {
|
||||
id String @id @db.Uuid
|
||||
status MediaOperation
|
||||
approval Boolean @default(false)
|
||||
proposedBy String @db.Uuid
|
||||
approvedBy String @db.Uuid
|
||||
mediaId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
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")
|
||||
}
|
||||
|
||||
model Genre {
|
||||
id String @id @db.Uuid
|
||||
name String @db.VarChar(255)
|
||||
slug String @unique @db.VarChar(255)
|
||||
malId Int @unique
|
||||
malUrl String @db.VarChar(255)
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creator User @relation("UserCreatedGenres", fields: [createdBy], references: [id])
|
||||
medias Media[] @relation("MediaGenres")
|
||||
user_favourite_genres UserPreference[] @relation("UserFavoriteGenres")
|
||||
|
||||
@@map("genres")
|
||||
}
|
||||
|
||||
model Studio {
|
||||
id String @id @db.Uuid
|
||||
name String @db.VarChar(255)
|
||||
slug String @unique @db.VarChar(255)
|
||||
linkAbout String
|
||||
malId Int @unique
|
||||
logoUrl String?
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creator User @relation("UserCreatedStudios", fields: [createdBy], references: [id])
|
||||
medias Media[] @relation("MediaStudios")
|
||||
|
||||
@@map("studios")
|
||||
}
|
||||
|
||||
model Character {
|
||||
id String @id @db.Uuid
|
||||
malId Int @unique
|
||||
name String
|
||||
role CharacterRole
|
||||
favorites Int @default(0)
|
||||
imageUrl String?
|
||||
smallImageUrl String?
|
||||
creatorId String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
createdBy User @relation("UserCreatedCharacters", fields: [creatorId], references: [id])
|
||||
voice_actors LangVAChar[] @relation("CharVALanguage")
|
||||
medias Media[] @relation("MediaCharacters")
|
||||
|
||||
@@map("characters")
|
||||
}
|
||||
|
||||
model VoiceActor {
|
||||
id String @id @db.Uuid
|
||||
malId Int @unique
|
||||
name String
|
||||
birthday DateTime?
|
||||
description String?
|
||||
aboutUrl String?
|
||||
imageUrl String?
|
||||
websiteUrl String?
|
||||
creatorId String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
characters LangVAChar[] @relation("VACharLanguage")
|
||||
createdBy User @relation("UserCreatedVoiceActors", fields: [creatorId], references: [id])
|
||||
|
||||
@@map("voice_actors")
|
||||
}
|
||||
|
||||
model LangVAChar {
|
||||
id String @id @db.Uuid
|
||||
language String
|
||||
vaId String @db.Uuid
|
||||
charId String @db.Uuid
|
||||
creatorId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
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])
|
||||
@@map("lang_va_char")
|
||||
}
|
||||
|
||||
model Episode {
|
||||
id String @id @db.Uuid
|
||||
mediaId String @db.Uuid
|
||||
episode Int
|
||||
name String @db.VarChar(255)
|
||||
score Decimal @default(0.00) @db.Decimal(4, 2)
|
||||
pictureThumbnail String?
|
||||
viewed BigInt @default(0)
|
||||
likes BigInt @default(0)
|
||||
dislikes BigInt @default(0)
|
||||
pendingUpload Boolean @default(true)
|
||||
uploadedBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
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])
|
||||
@@map("episodes")
|
||||
}
|
||||
|
||||
model EpisodeLike {
|
||||
id String @id @db.Uuid
|
||||
userId String @db.Uuid
|
||||
sessionId String @db.Uuid
|
||||
episodeId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
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")
|
||||
}
|
||||
|
||||
model Video {
|
||||
id String @id @db.Uuid
|
||||
episodeId String @db.Uuid
|
||||
serviceId String @db.Uuid
|
||||
videoCode String @db.VarChar(255)
|
||||
thumbnailCode String?
|
||||
pendingUpload Boolean @default(true)
|
||||
uploadedBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
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])
|
||||
@@map("videos")
|
||||
}
|
||||
|
||||
model VideoService {
|
||||
id String @id @db.Uuid
|
||||
name String @unique @db.VarChar(255)
|
||||
domain String @db.VarChar(255)
|
||||
logo String?
|
||||
hexColor String @db.VarChar(10)
|
||||
endpointVideo String
|
||||
endpointThumbnail String?
|
||||
endpointDownload String?
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
user_preferences UserPreference[] @relation("UserServiceDefault")
|
||||
creator User @relation("UserVideoServices", fields: [createdBy], references: [id])
|
||||
videos Video[] @relation("VideoServices")
|
||||
|
||||
@@map("video_services")
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @db.Uuid
|
||||
name String @db.VarChar(255)
|
||||
username String @unique @db.VarChar(255)
|
||||
email String @unique
|
||||
password String
|
||||
birthDate DateTime? @db.Date
|
||||
gender UserGender?
|
||||
phoneCC Int?
|
||||
phoneNumber Int?
|
||||
bioProfile String?
|
||||
avatar String?
|
||||
commentBackground String?
|
||||
provider String? @db.VarChar(255)
|
||||
providerId String? @unique @db.VarChar(255)
|
||||
providerToken String?
|
||||
providerPayload Json? @db.Json
|
||||
verifiedAt DateTime?
|
||||
disabledAt DateTime?
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
characters Character[] @relation("UserCreatedCharacters")
|
||||
collections Collection[] @relation("UserCollections")
|
||||
liked_comments CommentLike[] @relation("UserCommentLikes")
|
||||
approved_comments CommentReport[] @relation("ApprovedReportComments")
|
||||
reported_comments CommentReport[] @relation("UserReportComments")
|
||||
comments Comment[] @relation("UserComments")
|
||||
user_create_email EmailSystemAccount[] @relation("UserCreateSystemAccount")
|
||||
user_emails EmailSystemHistory[] @relation("UserEmails")
|
||||
episode_likes EpisodeLike[] @relation("UserEpisodeLikes")
|
||||
episodes Episode[] @relation("UserEpisodes")
|
||||
genres Genre[] @relation("UserCreatedGenres")
|
||||
user_hero_banner HeroBanner[] @relation("UserHeroBanner")
|
||||
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_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")
|
||||
}
|
||||
|
||||
model UserPreference {
|
||||
id String @id @db.Uuid
|
||||
userId String @unique @db.Uuid
|
||||
langPreference String?
|
||||
adultFiltering AdultFiltering @default(hide)
|
||||
adultAlert AdultAlert @default(show)
|
||||
videoQuality VideoQuality @default(Q1080)
|
||||
serviceDefaultId String? @db.Uuid
|
||||
hideContries Country[]
|
||||
createdAt DateTime @default(now())
|
||||
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")
|
||||
}
|
||||
|
||||
model UserRole {
|
||||
id String @id @db.Uuid
|
||||
name String @unique @db.VarChar(255)
|
||||
description String?
|
||||
primaryColor String? @db.VarChar(10)
|
||||
secondaryColor String? @db.VarChar(10)
|
||||
pictureImage String?
|
||||
badgeImage String?
|
||||
isSuperadmin Boolean @default(false)
|
||||
canEditMedia Boolean @default(false)
|
||||
canManageMedia Boolean @default(false)
|
||||
canEditEpisodes Boolean @default(false)
|
||||
canManageEpisodes Boolean @default(false)
|
||||
canEditComment Boolean @default(false)
|
||||
canManageComment Boolean @default(false)
|
||||
canEditUser Boolean @default(false)
|
||||
canManageUser Boolean @default(false)
|
||||
canEditSystem Boolean @default(false)
|
||||
canManageSystem Boolean @default(false)
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
assignedUser UserRoleAssignment[]
|
||||
creator User @relation("UserCreateRoles", fields: [createdBy], references: [id])
|
||||
|
||||
@@map("user_roles")
|
||||
}
|
||||
|
||||
model UserRoleAssignment {
|
||||
userId String @db.Uuid
|
||||
roleId String @db.Uuid
|
||||
assignmentAt DateTime @default(now())
|
||||
role UserRole @relation(fields: [roleId], references: [id])
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
|
||||
@@id([userId, roleId])
|
||||
@@map("user_role_assignments")
|
||||
}
|
||||
|
||||
model UserNotification {
|
||||
id String @id @db.Uuid
|
||||
title String @db.VarChar(255)
|
||||
content String
|
||||
picture String
|
||||
state UserNotificationState
|
||||
ctaLink String
|
||||
userId String @db.Uuid
|
||||
isReaded Boolean @default(false)
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
user User @relation("UserNotifications", fields: [userId], references: [id])
|
||||
|
||||
@@map("user_notifications")
|
||||
}
|
||||
|
||||
model UserSession {
|
||||
id String @id @db.Uuid
|
||||
isAuthenticated Boolean @default(false)
|
||||
userId String @db.Uuid
|
||||
deviceType String @db.VarChar(255)
|
||||
deviceOs String @db.VarChar(255)
|
||||
deviceIp String @db.VarChar(255)
|
||||
browser String @db.VarChar(255)
|
||||
isOnline Boolean @default(false)
|
||||
lastOnline DateTime @default(now())
|
||||
validUntil DateTime
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
episode_likes EpisodeLike[] @relation("SessionEpisodeLikes")
|
||||
logs UserLog[] @relation("UserSessionLogs")
|
||||
user User @relation("UserSession", fields: [userId], references: [id])
|
||||
watch_histories WatchHistory[] @relation("SessionWatchHistories")
|
||||
|
||||
@@index([userId, isAuthenticated, deletedAt])
|
||||
@@map("user_sessions")
|
||||
}
|
||||
|
||||
model UserLog {
|
||||
id String @id @db.Uuid
|
||||
title String @db.VarChar(255)
|
||||
notes String
|
||||
userId String @db.Uuid
|
||||
sessionId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
session UserSession @relation("UserSessionLogs", fields: [sessionId], references: [id])
|
||||
user User @relation("UserLogs", fields: [userId], references: [id])
|
||||
|
||||
@@map("user_logs")
|
||||
}
|
||||
|
||||
model Collection {
|
||||
id String @id @db.Uuid
|
||||
name String @db.VarChar(115)
|
||||
ownerId String @db.Uuid
|
||||
accessStatus AccessStatus @default(private)
|
||||
password String? @db.VarChar(255)
|
||||
accessScope AccessScope @default(viewer)
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
slug String @db.VarChar(115)
|
||||
media_saved CollectionMedia[] @relation("CollectionMedia")
|
||||
owner User @relation("UserCollections", fields: [ownerId], references: [id])
|
||||
usersAllowed User[] @relation("UserSelectedSharingCollention")
|
||||
|
||||
@@unique([slug, ownerId])
|
||||
@@map("collections")
|
||||
}
|
||||
|
||||
model CollectionMedia {
|
||||
id String @id @db.Uuid
|
||||
collectionId String @db.Uuid
|
||||
mediaId String @db.Uuid
|
||||
savedAt DateTime @default(now())
|
||||
collection Collection @relation("CollectionMedia", fields: [collectionId], references: [id])
|
||||
media Media @relation("CollectionMedia", fields: [mediaId], references: [id])
|
||||
|
||||
@@unique([collectionId, mediaId])
|
||||
}
|
||||
|
||||
model WatchHistory {
|
||||
id String @id @db.Uuid
|
||||
episodeId String @db.Uuid
|
||||
userId String @db.Uuid
|
||||
sessionId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
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")
|
||||
}
|
||||
|
||||
model MediaReview {
|
||||
id String @id @db.Uuid
|
||||
mediaId String @db.Uuid
|
||||
rating Int
|
||||
title String @db.VarChar(255)
|
||||
text String
|
||||
reaction MediaReviewReaction
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creator User @relation("UserMediaReviews", fields: [createdBy], references: [id])
|
||||
media Media @relation("MediaReviews", fields: [mediaId], references: [id])
|
||||
|
||||
@@map("movie_reviews")
|
||||
}
|
||||
|
||||
model Comment {
|
||||
id String @id @db.Uuid
|
||||
episodeId String @db.Uuid
|
||||
text String
|
||||
isParent Boolean @default(false)
|
||||
parentId String? @db.Uuid
|
||||
userId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
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")
|
||||
}
|
||||
|
||||
model CommentLike {
|
||||
id String @id @db.Uuid
|
||||
commentId String @db.Uuid
|
||||
userLiked String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
comment Comment @relation("CommentLikes", fields: [commentId], references: [id])
|
||||
user User @relation("UserCommentLikes", fields: [userLiked], references: [id])
|
||||
|
||||
@@map("comment_likes")
|
||||
}
|
||||
|
||||
model CommentReport {
|
||||
id String @id @db.Uuid
|
||||
userReporter String @db.Uuid
|
||||
commentReported String @db.Uuid
|
||||
isSupervisorReport Boolean @default(false)
|
||||
reason ReportReason
|
||||
status ReportStatus
|
||||
description String @db.VarChar(255)
|
||||
approvedBy String? @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
approver User? @relation("ApprovedReportComments", fields: [approvedBy], references: [id])
|
||||
reporter User @relation("UserReportComments", fields: [userReporter], references: [id])
|
||||
|
||||
@@map("comment_reports")
|
||||
}
|
||||
|
||||
model Language {
|
||||
id String @id @db.Uuid
|
||||
name String @db.VarChar(255)
|
||||
code String @unique @db.VarChar(5)
|
||||
countryFlag String @db.VarChar(10)
|
||||
fileLocation String
|
||||
craetedBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creator User @relation("UserCreateLanguages", fields: [craetedBy], references: [id])
|
||||
user_used UserPreference[] @relation("UserPreferenceLang")
|
||||
|
||||
@@map("languages")
|
||||
}
|
||||
|
||||
model EmailSystemAccount {
|
||||
id String @id @db.Uuid
|
||||
name String @unique
|
||||
host String @db.VarChar(255)
|
||||
port Int
|
||||
secure Boolean
|
||||
email String @unique @db.VarChar(255)
|
||||
username String @unique @db.VarChar(255)
|
||||
password String @db.VarChar(255)
|
||||
purpose EmailPorpose
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creator User @relation("UserCreateSystemAccount", fields: [createdBy], references: [id])
|
||||
|
||||
@@map("email_system_accounts")
|
||||
}
|
||||
|
||||
model EmailSystemHistory {
|
||||
id String @id @db.Uuid
|
||||
purpose EmailPorpose
|
||||
fromEmail String
|
||||
toEmail String
|
||||
userRelated String @db.Uuid
|
||||
title String @db.VarChar(255)
|
||||
htmlContent String
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
user User @relation("UserEmails", fields: [userRelated], references: [id])
|
||||
|
||||
@@map("email_system_histories")
|
||||
}
|
||||
|
||||
model HeroBanner {
|
||||
id String @id @db.Uuid
|
||||
orderPriority Int? @unique
|
||||
imageUrl String?
|
||||
startDate DateTime
|
||||
endDate DateTime
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creatorId String @db.Uuid
|
||||
mediaId String @db.Uuid
|
||||
createdBy User @relation("UserHeroBanner", fields: [creatorId], references: [id])
|
||||
media Media @relation("MediaBannerPromotion", fields: [mediaId], references: [id])
|
||||
|
||||
@@map("hero_banner")
|
||||
}
|
||||
|
||||
model SystemPreference {
|
||||
id String @id @db.Uuid
|
||||
key String @unique @db.VarChar(225)
|
||||
value String @db.VarChar(225)
|
||||
description String
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
|
||||
@@map("system_preferences")
|
||||
}
|
||||
|
||||
model SystemNotification {
|
||||
id String @id @db.Uuid
|
||||
type TypeSystemNotification
|
||||
componentName String? @db.VarChar(255)
|
||||
popupImage String?
|
||||
titleToast String? @db.VarChar(255)
|
||||
contentToast String?
|
||||
createdBy String @db.Uuid
|
||||
deletedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
creator User @relation("UserCreatorSystemNotifications", fields: [createdBy], references: [id])
|
||||
|
||||
@@map("system_notifications")
|
||||
}
|
||||
|
||||
model SystemLog {
|
||||
id String @id @db.Uuid
|
||||
title String @db.VarChar(255)
|
||||
notes String
|
||||
relatedUser String? @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
user User? @relation("UserSystemLogs", fields: [relatedUser], references: [id])
|
||||
|
||||
@@map("system_logs")
|
||||
}
|
||||
|
||||
enum MediaType {
|
||||
TV
|
||||
ONA
|
||||
OVA
|
||||
Movie
|
||||
Special
|
||||
Music
|
||||
}
|
||||
|
||||
enum Country {
|
||||
JP @map("Japanese")
|
||||
EN @map("English")
|
||||
ID @map("Indonesia")
|
||||
KR @map("Korea")
|
||||
}
|
||||
|
||||
enum Season {
|
||||
winter
|
||||
spring
|
||||
summer
|
||||
fall
|
||||
}
|
||||
|
||||
enum CharacterRole {
|
||||
Main
|
||||
Supporting
|
||||
}
|
||||
|
||||
enum MediaOperation {
|
||||
create
|
||||
update
|
||||
delete
|
||||
}
|
||||
|
||||
enum UserGender {
|
||||
male
|
||||
female
|
||||
}
|
||||
|
||||
enum AdultFiltering {
|
||||
hide
|
||||
show
|
||||
explicit
|
||||
}
|
||||
|
||||
enum AdultAlert {
|
||||
hide
|
||||
show
|
||||
}
|
||||
|
||||
enum VideoQuality {
|
||||
Q2160
|
||||
Q1440
|
||||
Q1080
|
||||
Q720
|
||||
Q480
|
||||
Q360
|
||||
Q240
|
||||
Q144
|
||||
}
|
||||
|
||||
enum UserNotificationState {
|
||||
info
|
||||
warning
|
||||
danger
|
||||
}
|
||||
|
||||
enum ReportStatus {
|
||||
pending
|
||||
resolved
|
||||
rejected
|
||||
}
|
||||
|
||||
enum ReportReason {
|
||||
sexualize
|
||||
violent
|
||||
explicit
|
||||
hateful
|
||||
political
|
||||
racist
|
||||
spam
|
||||
other
|
||||
}
|
||||
|
||||
enum AccessStatus {
|
||||
private
|
||||
selected
|
||||
protected
|
||||
public
|
||||
}
|
||||
|
||||
enum AccessScope {
|
||||
viewer
|
||||
editor
|
||||
}
|
||||
|
||||
enum MediaReviewReaction {
|
||||
angry
|
||||
sad
|
||||
awesome
|
||||
happy
|
||||
sleepy
|
||||
annoyed
|
||||
disgusting
|
||||
disappointed
|
||||
}
|
||||
|
||||
enum EmailPorpose {
|
||||
forgot_password
|
||||
account_activation
|
||||
account_notification
|
||||
subscribtion
|
||||
}
|
||||
|
||||
enum TypeSystemNotification {
|
||||
component
|
||||
popup
|
||||
toast
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user