diff --git a/prisma/migrations/20241114191537_set_default_value_for_created_at_in_chat/migration.sql b/prisma/migrations/20241114191537_set_default_value_for_created_at_in_chat/migration.sql deleted file mode 100644 index 0357346..0000000 --- a/prisma/migrations/20241114191537_set_default_value_for_created_at_in_chat/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE `Chat` MODIFY `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3); diff --git a/prisma/migrations/20241117163808_added_selectable_field_to_character_types/migration.sql b/prisma/migrations/20241117163808_added_selectable_field_to_character_types/migration.sql deleted file mode 100644 index b3e94cc..0000000 --- a/prisma/migrations/20241117163808_added_selectable_field_to_character_types/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE `CharacterType` ADD COLUMN `isEnabledForCharCreation` BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/20241113010305_init/migration.sql b/prisma/migrations/20241121015734_init/migration.sql similarity index 92% rename from prisma/migrations/20241113010305_init/migration.sql rename to prisma/migrations/20241121015734_init/migration.sql index ee38c1a..9f03ab9 100644 --- a/prisma/migrations/20241113010305_init/migration.sql +++ b/prisma/migrations/20241121015734_init/migration.sql @@ -15,7 +15,7 @@ CREATE TABLE `Chat` ( `characterId` INTEGER NOT NULL, `zoneId` INTEGER NOT NULL, `message` VARCHAR(191) NOT NULL, - `createdAt` DATETIME(3) NOT NULL, + `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; @@ -47,6 +47,18 @@ CREATE TABLE `SpriteAction` ( PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- CreateTable +CREATE TABLE `Item` ( + `id` VARCHAR(191) NOT NULL, + `name` VARCHAR(191) NOT NULL, + `description` VARCHAR(191) NULL, + `stackable` BOOLEAN NOT NULL DEFAULT false, + `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updatedAt` DATETIME(3) NOT NULL, + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + -- CreateTable CREATE TABLE `User` ( `id` INTEGER NOT NULL AUTO_INCREMENT, @@ -77,6 +89,7 @@ CREATE TABLE `CharacterType` ( `name` VARCHAR(191) NOT NULL, `gender` ENUM('MALE', 'FEMALE') NOT NULL, `race` ENUM('HUMAN', 'ELF', 'DWARF', 'ORC', 'GOBLIN') NOT NULL, + `isEnabledForCharCreation` BOOLEAN NOT NULL DEFAULT false, `spriteId` VARCHAR(191) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, @@ -84,6 +97,15 @@ CREATE TABLE `CharacterType` ( PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- CreateTable +CREATE TABLE `CharacterHair` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `name` VARCHAR(191) NOT NULL, + `spriteId` VARCHAR(191) NULL, + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + -- CreateTable CREATE TABLE `Character` ( `id` INTEGER NOT NULL AUTO_INCREMENT, @@ -101,6 +123,7 @@ CREATE TABLE `Character` ( `rotation` INTEGER NOT NULL DEFAULT 0, `zoneId` INTEGER NOT NULL DEFAULT 1, `characterTypeId` INTEGER NULL, + `hairId` INTEGER NULL, UNIQUE INDEX `Character_name_key`(`name`), PRIMARY KEY (`id`) @@ -144,18 +167,6 @@ CREATE TABLE `Object` ( PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; --- CreateTable -CREATE TABLE `Item` ( - `id` VARCHAR(191) NOT NULL, - `name` VARCHAR(191) NOT NULL, - `description` VARCHAR(191) NULL, - `stackable` BOOLEAN NOT NULL DEFAULT false, - `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `updatedAt` DATETIME(3) NOT NULL, - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - -- CreateTable CREATE TABLE `Zone` ( `id` INTEGER NOT NULL AUTO_INCREMENT, @@ -232,6 +243,9 @@ ALTER TABLE `PasswordResetToken` ADD CONSTRAINT `PasswordResetToken_userId_fkey` -- AddForeignKey ALTER TABLE `CharacterType` ADD CONSTRAINT `CharacterType_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE `CharacterHair` ADD CONSTRAINT `CharacterHair_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE `Character` ADD CONSTRAINT `Character_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; @@ -241,6 +255,9 @@ ALTER TABLE `Character` ADD CONSTRAINT `Character_zoneId_fkey` FOREIGN KEY (`zon -- AddForeignKey ALTER TABLE `Character` ADD CONSTRAINT `Character_characterTypeId_fkey` FOREIGN KEY (`characterTypeId`) REFERENCES `CharacterType`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE `Character` ADD CONSTRAINT `Character_hairId_fkey` FOREIGN KEY (`hairId`) REFERENCES `CharacterHair`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE `CharacterItem` ADD CONSTRAINT `CharacterItem_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema/game.prisma b/prisma/schema/game.prisma index 40ce1fb..d8cedf9 100644 --- a/prisma/schema/game.prisma +++ b/prisma/schema/game.prisma @@ -23,6 +23,7 @@ model Sprite { updatedAt DateTime @updatedAt spriteActions SpriteAction[] characterTypes CharacterType[] + characterHairs CharacterHair[] } model SpriteAction { @@ -39,3 +40,13 @@ model SpriteAction { frameHeight Int @default(0) frameSpeed Int @default(0) } + +model Item { + id String @id @default(uuid()) + name String + description String? + stackable Boolean @default(false) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + characters CharacterItem[] +} diff --git a/prisma/schema/user.prisma b/prisma/schema/user.prisma index c67bdbd..017b8eb 100644 --- a/prisma/schema/user.prisma +++ b/prisma/schema/user.prisma @@ -1,3 +1,16 @@ +enum CharacterGender { + MALE + FEMALE +} + +enum CharacterRace { + HUMAN + ELF + DWARF + ORC + GOBLIN +} + model User { id Int @id @default(autoincrement()) username String @unique @@ -16,19 +29,6 @@ model PasswordResetToken { createdAt DateTime @default(now()) } -enum CharacterGender { - MALE - FEMALE -} - -enum CharacterRace { - HUMAN - ELF - DWARF - ORC - GOBLIN -} - model CharacterType { id Int @id @default(autoincrement()) name String @@ -42,6 +42,15 @@ model CharacterType { updatedAt DateTime @updatedAt } +model CharacterHair { + id Int @id @default(autoincrement()) + name String + sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) + spriteId String? + characters Character[] + // @TODO: Do we need addedAt and updatedAt? +} + model Character { id Int @id @default(autoincrement()) userId Int @@ -61,6 +70,8 @@ model Character { zone Zone @relation(fields: [zoneId], references: [id], onDelete: Cascade) characterTypeId Int? characterType CharacterType? @relation(fields: [characterTypeId], references: [id], onDelete: Cascade) + hairId Int? + hair CharacterHair? @relation(fields: [hairId], references: [id], onDelete: Cascade) chats Chat[] items CharacterItem[] } diff --git a/prisma/schema/zone.prisma b/prisma/schema/zone.prisma index e6613bc..c1ae1bf 100644 --- a/prisma/schema/zone.prisma +++ b/prisma/schema/zone.prisma @@ -21,16 +21,6 @@ model Object { ZoneObject ZoneObject[] } -model Item { - id String @id @default(uuid()) - name String - description String? - stackable Boolean @default(false) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - characters CharacterItem[] -} - model Zone { id Int @id @default(autoincrement()) name String