diff --git a/prisma/migrations/20250407054739_add_referencial_actions/migration.sql b/prisma/migrations/20250407054739_add_referencial_actions/migration.sql new file mode 100644 index 0000000..a976dd9 --- /dev/null +++ b/prisma/migrations/20250407054739_add_referencial_actions/migration.sql @@ -0,0 +1,44 @@ +-- DropForeignKey +ALTER TABLE `comments` DROP FOREIGN KEY `comments_ibfk_1`; + +-- DropForeignKey +ALTER TABLE `discs` DROP FOREIGN KEY `discs_ibfk_1`; + +-- DropForeignKey +ALTER TABLE `favorites` DROP FOREIGN KEY `favorites_ibfk_1`; + +-- DropForeignKey +ALTER TABLE `links` DROP FOREIGN KEY `links_ibfk_1`; + +-- DropForeignKey +ALTER TABLE `ratings` DROP FOREIGN KEY `ratings_ibfk_1`; + +-- DropIndex +DROP INDEX `ostId` ON `comments`; + +-- DropIndex +DROP INDEX `discs_ibfk_1` ON `discs`; + +-- DropIndex +DROP INDEX `favorites_ibfk_1` ON `favorites`; + +-- DropIndex +DROP INDEX `links_ibfk_1` ON `links`; + +-- DropIndex +DROP INDEX `ratings_ibfk_1` ON `ratings`; + +-- AddForeignKey +ALTER TABLE `comments` ADD CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`albumId`) REFERENCES `albums`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `discs` ADD CONSTRAINT `discs_ibfk_1` FOREIGN KEY (`albumId`) REFERENCES `albums`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `favorites` ADD CONSTRAINT `favorites_ibfk_1` FOREIGN KEY (`albumId`) REFERENCES `albums`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `links` ADD CONSTRAINT `links_ibfk_1` FOREIGN KEY (`downloadId`) REFERENCES `downloads`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `ratings` ADD CONSTRAINT `ratings_ibfk_1` FOREIGN KEY (`albumId`) REFERENCES `albums`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f909414..18b492e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -199,8 +199,8 @@ model comments { updatedAt DateTime @db.DateTime(0) albumId Int? username String? @db.VarChar(255) - album albums? @relation(fields: [albumId], references: [id], map: "comments_ibfk_1") - user users? @relation(fields: [username], references: [id], map: "comments_ibfk_2") + album albums? @relation(fields: [albumId], references: [id], map: "comments_ibfk_1", onDelete: Cascade) + user users? @relation(fields: [username], references: [id], map: "comments_ibfk_2", onDelete: SetNull) } model config { @@ -215,7 +215,7 @@ model discs { number Int? body String? @db.Text albumId Int - album albums? @relation(fields: [albumId], references: [id], map: "discs_ibfk_1") + album albums? @relation(fields: [albumId], references: [id], map: "discs_ibfk_1", onDelete: Cascade) } model downloads { @@ -232,7 +232,7 @@ model favorites { updatedAt DateTime @db.DateTime(0) albumId Int username String? @db.VarChar(255) - album albums? @relation(fields: [albumId], references: [id], map: "favorites_ibfk_1") + album albums? @relation(fields: [albumId], references: [id], map: "favorites_ibfk_1", onDelete: Cascade) users users? @relation(fields: [username], references: [id], map: "favorites_ibfk_2") } @@ -277,7 +277,7 @@ model links { provider String? @db.VarChar(255) downloadId Int url2 String? @db.VarChar(255) - download downloads? @relation(fields: [downloadId], references: [id], map: "links_ibfk_1") + download downloads? @relation(fields: [downloadId], references: [id], map: "links_ibfk_1", onDelete: Cascade) } model logs { @@ -321,7 +321,7 @@ model ratings { updatedAt DateTime @db.DateTime(0) albumId Int username String @db.VarChar(255) - album albums? @relation(fields: [albumId], references: [id], map: "ratings_ibfk_1") + album albums? @relation(fields: [albumId], references: [id], map: "ratings_ibfk_1", onDelete: Cascade) user users? @relation(fields: [username], references: [id], map: "ratings_ibfk_2") } diff --git a/src/pages/admin/album/[id].astro b/src/pages/admin/album/[id].astro index c5e8bce..b72350a 100644 --- a/src/pages/admin/album/[id].astro +++ b/src/pages/admin/album/[id].astro @@ -81,7 +81,7 @@ if (!album) { - + diff --git a/src/pages/album/[id].astro b/src/pages/album/[id].astro index 7b09f8e..9734563 100644 --- a/src/pages/album/[id].astro +++ b/src/pages/album/[id].astro @@ -86,6 +86,14 @@ const coverImage = await getImage({ meta: [{ name: 'theme-color', content: album?.headerColor }] }} /> + +{album?.status === AlbumStatus.HIDDEN ? ( + +) : null} +
{ games: { deleteMany: {}, create: games?.map((slug) => ({ game: { connect: { slug } } })) }, platforms: { deleteMany: {}, create: platforms?.map((id) => ({ platform: { connect: { id } } })) }, discs: { deleteMany: {}, createMany: { data: body.discs ?? [] } }, - relatedAlbums: { deleteMany: {}, create: related?.map((id) => ({ relatedAlbum: { connect: { id } } })) } + relatedAlbums: { deleteMany: {}, create: related?.map((id) => ({ relatedAlbum: { connect: { id } } })) }, + downloads: { deleteMany: {} } } }) await Promise.all([ - cover ? handleCover(cover, 'album', albumId, tx) : undefined, + cover && cover.size > 0 ? handleCover(cover, 'album', albumId, tx) : undefined, downloads - ? tx.downloads.createMany({ - data: downloads.map((d) => ({ - title: d.title, - albumId: albumId, - links: { create: d.links } - })) - }) + ? Promise.all( + downloads.map((d) => + tx.downloads.create({ + data: { + title: d.title, + albumId: albumId, + links: { create: d.links } + } + }) + ) + ) : undefined ]) })