Compare commits
7 Commits
b27479cd3e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6556ac8354 | |||
| 16d8c00d75 | |||
| e61686956b | |||
| baf7ba20b1 | |||
| 697f28de60 | |||
| 72f8e9e4eb | |||
| 59228f7d1e |
@ -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;
|
||||||
|
|
||||||
@ -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;
|
|
||||||
@ -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");
|
|
||||||
@ -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;
|
|
||||||
@ -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;
|
||||||
@ -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,17 +87,17 @@ 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")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,14 +109,14 @@ model Character {
|
|||||||
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
|
||||||
|
|||||||
@ -1,17 +1,16 @@
|
|||||||
import { Context, Static } from "elysia";
|
import { Context, Static } from "elysia";
|
||||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||||
import { getMediaBySlugSchema } from "../schemas/getMediaBySlug.schema";
|
import { getMediaBySlugSchema } from "../schemas/getMediaBySlug.schema";
|
||||||
|
import { getMediaBySlugService } from "../services/http/getMediaBySlug.service";
|
||||||
|
import { returnReadResponse } from "../../../helpers/callback/httpResponse";
|
||||||
|
|
||||||
export const getMediaBySlugController = async (ctx: {
|
export const getMediaBySlugController = async (ctx: {
|
||||||
set: Context["set"];
|
set: Context["set"];
|
||||||
params: Static<typeof getMediaBySlugSchema.params>;
|
params: Static<typeof getMediaBySlugSchema.params>;
|
||||||
}) => {
|
}) => {
|
||||||
try {
|
try {
|
||||||
return {
|
const mediaData = await getMediaBySlugService(ctx.params.slug);
|
||||||
success: true,
|
return returnReadResponse(ctx.set, 200, "Media fetched successfully", mediaData);
|
||||||
status: 200,
|
|
||||||
message: `Media with slug '${ctx.params.slug}' fetched successfully`,
|
|
||||||
};
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return mainErrorHandler(ctx.set, error);
|
return mainErrorHandler(ctx.set, error);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { AppError } from "../../../../helpers/error/instances/app";
|
||||||
|
import { prisma } from "../../../../utils/databases/prisma/connection";
|
||||||
|
|
||||||
|
export const selectMediaBySlugRepository = async (slug: string) => {
|
||||||
|
try {
|
||||||
|
return await prisma.media.findUnique({
|
||||||
|
where: { slug },
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
throw new AppError(500, "Failed to fetch media by slug", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
14
src/modules/media/services/http/getMediaBySlug.service.ts
Normal file
14
src/modules/media/services/http/getMediaBySlug.service.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { AppError } from "../../../../helpers/error/instances/app";
|
||||||
|
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
||||||
|
import { selectMediaBySlugRepository } from "../../repositories/SELECT/selectMediaBySlug.repository";
|
||||||
|
|
||||||
|
export const getMediaBySlugService = async (slug: string) => {
|
||||||
|
try {
|
||||||
|
const mediaData = await selectMediaBySlugRepository(slug);
|
||||||
|
if (!mediaData) throw new AppError(404, "Media not found with the provided slug.");
|
||||||
|
|
||||||
|
return mediaData;
|
||||||
|
} catch (error) {
|
||||||
|
ErrorForwarder(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user