famous last words: fuck (changing ORM)

This commit is contained in:
Dennis Postma 2024-12-24 15:27:24 +01:00
parent ac4cefa902
commit 241cfb3eb2
6 changed files with 107 additions and 42 deletions

View File

@ -151,10 +151,9 @@ CREATE TABLE `CharacterItem` (
-- CreateTable -- CreateTable
CREATE TABLE `CharacterEquipment` ( CREATE TABLE `CharacterEquipment` (
`id` INTEGER NOT NULL AUTO_INCREMENT, `id` INTEGER NOT NULL AUTO_INCREMENT,
`characterId` INTEGER NOT NULL,
`itemId` VARCHAR(191) NOT NULL,
`quantity` INTEGER NOT NULL,
`slot` ENUM('HEAD', 'BODY', 'ARMS', 'LEGS', 'NECK', 'RING') NOT NULL, `slot` ENUM('HEAD', 'BODY', 'ARMS', 'LEGS', 'NECK', 'RING') NOT NULL,
`characterId` INTEGER NOT NULL,
`characterItemId` INTEGER NOT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@ -291,7 +290,7 @@ ALTER TABLE `CharacterItem` ADD CONSTRAINT `CharacterItem_itemId_fkey` FOREIGN K
ALTER TABLE `CharacterEquipment` ADD CONSTRAINT `CharacterEquipment_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `CharacterEquipment` ADD CONSTRAINT `CharacterEquipment_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE `CharacterEquipment` ADD CONSTRAINT `CharacterEquipment_itemId_fkey` FOREIGN KEY (`itemId`) REFERENCES `Item`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `CharacterEquipment` ADD CONSTRAINT `CharacterEquipment_characterItemId_fkey` FOREIGN KEY (`characterItemId`) REFERENCES `CharacterItem`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey -- AddForeignKey
ALTER TABLE `ZoneEffect` ADD CONSTRAINT `ZoneEffect_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `ZoneEffect` ADD CONSTRAINT `ZoneEffect_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -43,18 +43,17 @@ model SpriteAction {
} }
model Item { model Item {
id String @id @default(uuid()) id String @id @default(uuid())
name String name String
description String? description String?
itemType ItemType itemType ItemType
stackable Boolean @default(false) stackable Boolean @default(false)
rarity ItemRarity @default(COMMON) rarity ItemRarity @default(COMMON)
spriteId String? spriteId String?
sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @updatedAt updatedAt DateTime @updatedAt
characters CharacterItem[] characters CharacterItem[]
equipment CharacterEquipment[]
} }
enum ItemType { enum ItemType {

View File

@ -30,26 +30,26 @@ model PasswordResetToken {
} }
model CharacterType { model CharacterType {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
name String name String
gender CharacterGender gender CharacterGender
race CharacterRace race CharacterRace
isSelectable Boolean @default(false) isSelectable Boolean @default(false)
characters Character[] characters Character[]
spriteId String? spriteId String?
sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @updatedAt updatedAt DateTime @updatedAt
} }
model CharacterHair { model CharacterHair {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
name String name String
gender CharacterGender @default(MALE) gender CharacterGender @default(MALE)
isSelectable Boolean @default(false) isSelectable Boolean @default(false)
sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade)
spriteId String? spriteId String?
characters Character[] characters Character[]
} }
model Character { model Character {
@ -91,22 +91,22 @@ model Character {
} }
model CharacterItem { model CharacterItem {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
characterId Int characterId Int
character Character @relation(fields: [characterId], references: [id], onDelete: Cascade) character Character @relation(fields: [characterId], references: [id], onDelete: Cascade)
itemId String itemId String
item Item @relation(fields: [itemId], references: [id], onDelete: Cascade) item Item @relation(fields: [itemId], references: [id], onDelete: Cascade)
quantity Int quantity Int
CharacterEquipment CharacterEquipment[]
} }
model CharacterEquipment { model CharacterEquipment {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
characterId Int slot CharacterEquipmentSlotType
character Character @relation(fields: [characterId], references: [id], onDelete: Cascade) characterId Int
itemId String character Character @relation(fields: [characterId], references: [id], onDelete: Cascade)
item Item @relation(fields: [itemId], references: [id], onDelete: Cascade) characterItemId Int
quantity Int characterItem CharacterItem @relation(fields: [characterItemId], references: [id], onDelete: Cascade)
slot CharacterEquipmentSlotType
} }
enum CharacterEquipmentSlotType { enum CharacterEquipmentSlotType {

File diff suppressed because one or more lines are too long

View File

@ -23,6 +23,11 @@ class CharacterRepository {
} }
} }
} }
},
equipment: {
include: {
item: true
}
} }
} }
}) })
@ -55,6 +60,11 @@ class CharacterRepository {
} }
} }
} }
},
equipment: {
include: {
item: true
}
} }
} }
}) })
@ -86,6 +96,11 @@ class CharacterRepository {
} }
} }
} }
},
equipment: {
include: {
item: true
}
} }
} }
}) })
@ -117,6 +132,11 @@ class CharacterRepository {
} }
} }
} }
},
equipment: {
include: {
item: true
}
} }
} }
}) })

View File

@ -158,9 +158,12 @@ export default class SpriteUpdateEvent {
const processedInput = await sharp(buffer) const processedInput = await sharp(buffer)
.ensureAlpha() .ensureAlpha()
.resize({ .resize({
width: frameWidth, // Set maximum width
height: frameHeight, // Set maximum height
fit: 'inside', // Ensure image fits within dimensions
kernel: sharp.kernel.nearest, kernel: sharp.kernel.nearest,
fit: 'contain', position: 'center',
position: 'center' withoutEnlargement: true // Don't enlarge smaller images
}) })
.png({ .png({
compressionLevel: 9, compressionLevel: 9,