diff --git a/prisma/migrations/20240815100640_retagging/migration.sql b/prisma/migrations/20240815100640_retagging/migration.sql new file mode 100644 index 0000000..74fb996 --- /dev/null +++ b/prisma/migrations/20240815100640_retagging/migration.sql @@ -0,0 +1,83 @@ +/* + Warnings: + + - Added the required column `authorId` to the `GameSystem` table without a default value. This is not possible if the table is not empty. + - Added the required column `authorId` to the `Publication` table without a default value. This is not possible if the table is not empty. + - Added the required column `authorId` to the `Schema` table without a default value. This is not possible if the table is not empty. + - Added the required column `originalId` to the `Schema` table without a default value. This is not possible if the table is not empty. + - Added the required column `name` to the `Tag` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropForeignKey +ALTER TABLE `Schema` DROP FOREIGN KEY `Schema_gameSystemId_fkey`; + +-- DropForeignKey +ALTER TABLE `Tag` DROP FOREIGN KEY `Tag_publicationId_fkey`; + +-- AlterTable +ALTER TABLE `GameSystem` ADD COLUMN `authorId` VARCHAR(191) NOT NULL; + +-- AlterTable +ALTER TABLE `Publication` ADD COLUMN `authorId` VARCHAR(191) NOT NULL; + +-- AlterTable +ALTER TABLE `Schema` ADD COLUMN `authorId` VARCHAR(191) NOT NULL, + ADD COLUMN `originalId` VARCHAR(191) NOT NULL, + MODIFY `gameSystemId` VARCHAR(191) NULL; + +-- AlterTable +ALTER TABLE `Tag` ADD COLUMN `name` VARCHAR(191) NOT NULL, + MODIFY `publicationId` VARCHAR(191) NULL; + +-- CreateTable +CREATE TABLE `TagsOnPublications` ( + `publicationId` VARCHAR(191) NOT NULL, + `tagId` VARCHAR(191) NOT NULL, + + PRIMARY KEY (`publicationId`, `tagId`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `TagsOnTags` ( + `parentTagId` VARCHAR(191) NOT NULL, + `childTagId` VARCHAR(191) NOT NULL, + + PRIMARY KEY (`parentTagId`, `childTagId`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `User` ( + `id` VARCHAR(191) NOT NULL, + `username` VARCHAR(191) NOT NULL, + `email` VARCHAR(191) NOT NULL, + + UNIQUE INDEX `User_email_key`(`email`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- AddForeignKey +ALTER TABLE `GameSystem` ADD CONSTRAINT `GameSystem_authorId_fkey` FOREIGN KEY (`authorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `Schema` ADD CONSTRAINT `Schema_gameSystemId_fkey` FOREIGN KEY (`gameSystemId`) REFERENCES `GameSystem`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `Schema` ADD CONSTRAINT `Schema_authorId_fkey` FOREIGN KEY (`authorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `Publication` ADD CONSTRAINT `Publication_authorId_fkey` FOREIGN KEY (`authorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `TagsOnPublications` ADD CONSTRAINT `TagsOnPublications_publicationId_fkey` FOREIGN KEY (`publicationId`) REFERENCES `Publication`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `TagsOnPublications` ADD CONSTRAINT `TagsOnPublications_tagId_fkey` FOREIGN KEY (`tagId`) REFERENCES `Tag`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `Tag` ADD CONSTRAINT `Tag_publicationId_fkey` FOREIGN KEY (`publicationId`) REFERENCES `Publication`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `TagsOnTags` ADD CONSTRAINT `TagsOnTags_parentTagId_fkey` FOREIGN KEY (`parentTagId`) REFERENCES `Tag`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `TagsOnTags` ADD CONSTRAINT `TagsOnTags_childTagId_fkey` FOREIGN KEY (`childTagId`) REFERENCES `Tag`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index cc63493..cd5600e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -25,8 +25,8 @@ model GameSystem { model Schema { id String @id @default(cuid()) - gameSystem GameSystem @relation(fields: [gameSystemId], references: [id]) - gameSystemId String + gameSystem GameSystem? @relation(fields: [gameSystemId], references: [id]) + gameSystemId String? publications Publication[] author User @relation(fields: [authorId], references: [id]) authorId String @@ -46,14 +46,37 @@ model Publication { author User @relation(fields: [authorId], references: [id]) authorId String - name String - data Json + name String + data Json + TagsOnPublications TagsOnPublications[] +} + +model TagsOnPublications { + publication Publication @relation(fields: [publicationId], references: [id]) + publicationId String + tagId String + tag Tag @relation(fields: [tagId], references: [id]) + + @@id([publicationId, tagId]) } model Tag { - id String @id @default(cuid()) - publication Publication @relation(fields: [publicationId], references: [id]) - publicationId String + id String @id @default(cuid()) + name String + Publication Publication? @relation(fields: [publicationId], references: [id]) + publicationId String? + TagsOnPublications TagsOnPublications[] + childTagsOnTags TagsOnTags[] @relation("childTag") + parentTagsOnTags TagsOnTags[] @relation("parentTag") +} + +model TagsOnTags { + parentTagId String + parentTag Tag @relation(fields: [parentTagId], references: [id], "parentTag") + childTagId String + childTag Tag @relation(fields: [childTagId], references: [id], "childTag") + + @@id([parentTagId, childTagId]) } model User {