forked from noxious/server
313 lines
12 KiB
SQL
313 lines
12 KiB
SQL
-- CreateTable
|
|
CREATE TABLE `World` (
|
|
`date` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`isRainEnabled` BOOLEAN NOT NULL DEFAULT false,
|
|
`rainPercentage` INTEGER NOT NULL DEFAULT 0,
|
|
`isFogEnabled` BOOLEAN NOT NULL DEFAULT false,
|
|
`fogDensity` INTEGER NOT NULL DEFAULT 0,
|
|
|
|
UNIQUE INDEX `World_date_key`(`date`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `Chat` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`characterId` INTEGER NOT NULL,
|
|
`zoneId` INTEGER NOT NULL,
|
|
`message` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `Sprite` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`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 `SpriteAction` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`spriteId` VARCHAR(191) NOT NULL,
|
|
`action` VARCHAR(191) NOT NULL,
|
|
`sprites` JSON NULL,
|
|
`originX` DECIMAL(65, 30) NOT NULL DEFAULT 0,
|
|
`originY` DECIMAL(65, 30) NOT NULL DEFAULT 0,
|
|
`isAnimated` BOOLEAN NOT NULL DEFAULT false,
|
|
`isLooping` BOOLEAN NOT NULL DEFAULT false,
|
|
`frameWidth` INTEGER NOT NULL DEFAULT 0,
|
|
`frameHeight` INTEGER NOT NULL DEFAULT 0,
|
|
`frameRate` INTEGER NOT NULL DEFAULT 0,
|
|
|
|
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,
|
|
`itemType` ENUM('WEAPON', 'HELMET', 'CHEST', 'LEGS', 'BOOTS', 'GLOVES', 'RING', 'NECKLACE') NOT NULL,
|
|
`stackable` BOOLEAN NOT NULL DEFAULT false,
|
|
`rarity` ENUM('COMMON', 'UNCOMMON', 'RARE', 'EPIC', 'LEGENDARY') NOT NULL DEFAULT 'COMMON',
|
|
`spriteId` VARCHAR(191) NULL,
|
|
`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,
|
|
`username` VARCHAR(191) NOT NULL,
|
|
`email` VARCHAR(191) NOT NULL,
|
|
`password` VARCHAR(191) NOT NULL,
|
|
`online` BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
UNIQUE INDEX `User_username_key`(`username`),
|
|
UNIQUE INDEX `User_email_key`(`email`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `PasswordResetToken` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`userId` INTEGER NOT NULL,
|
|
`token` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
UNIQUE INDEX `PasswordResetToken_token_key`(`token`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `CharacterType` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`gender` ENUM('MALE', 'FEMALE') NOT NULL,
|
|
`race` ENUM('HUMAN', 'ELF', 'DWARF', 'ORC', 'GOBLIN') NOT NULL,
|
|
`isSelectable` BOOLEAN NOT NULL DEFAULT false,
|
|
`spriteId` VARCHAR(191) NULL,
|
|
`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 `CharacterHair` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`gender` ENUM('MALE', 'FEMALE') NOT NULL DEFAULT 'MALE',
|
|
`isSelectable` BOOLEAN NOT NULL DEFAULT false,
|
|
`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,
|
|
`userId` INTEGER NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`online` BOOLEAN NOT NULL DEFAULT false,
|
|
`role` VARCHAR(191) NOT NULL DEFAULT 'player',
|
|
`zoneId` INTEGER NOT NULL DEFAULT 1,
|
|
`positionX` INTEGER NOT NULL DEFAULT 0,
|
|
`positionY` INTEGER NOT NULL DEFAULT 0,
|
|
`rotation` INTEGER NOT NULL DEFAULT 0,
|
|
`characterTypeId` INTEGER NULL,
|
|
`characterHairId` INTEGER NULL,
|
|
`alignment` INTEGER NOT NULL DEFAULT 50,
|
|
`hitpoints` INTEGER NOT NULL DEFAULT 100,
|
|
`mana` INTEGER NOT NULL DEFAULT 100,
|
|
`level` INTEGER NOT NULL DEFAULT 1,
|
|
`experience` INTEGER NOT NULL DEFAULT 0,
|
|
`strength` INTEGER NOT NULL DEFAULT 10,
|
|
`dexterity` INTEGER NOT NULL DEFAULT 10,
|
|
`intelligence` INTEGER NOT NULL DEFAULT 10,
|
|
`wisdom` INTEGER NOT NULL DEFAULT 10,
|
|
|
|
UNIQUE INDEX `Character_name_key`(`name`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `CharacterItem` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`characterId` INTEGER NOT NULL,
|
|
`itemId` VARCHAR(191) NOT NULL,
|
|
`quantity` INTEGER NOT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `CharacterEquipment` (
|
|
`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,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `Tile` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`tags` JSON NULL,
|
|
`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 `Object` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`tags` JSON NULL,
|
|
`originX` DECIMAL(65, 30) NOT NULL DEFAULT 0,
|
|
`originY` DECIMAL(65, 30) NOT NULL DEFAULT 0,
|
|
`isAnimated` BOOLEAN NOT NULL DEFAULT false,
|
|
`frameRate` INTEGER NOT NULL DEFAULT 0,
|
|
`frameWidth` INTEGER NOT NULL DEFAULT 0,
|
|
`frameHeight` INTEGER NOT NULL DEFAULT 0,
|
|
`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,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`width` INTEGER NOT NULL DEFAULT 10,
|
|
`height` INTEGER NOT NULL DEFAULT 10,
|
|
`tiles` JSON NULL,
|
|
`pvp` 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 `ZoneEffect` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`zoneId` INTEGER NOT NULL,
|
|
`effect` VARCHAR(191) NOT NULL,
|
|
`strength` INTEGER NOT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `ZoneObject` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`zoneId` INTEGER NOT NULL,
|
|
`objectId` VARCHAR(191) NOT NULL,
|
|
`depth` INTEGER NOT NULL DEFAULT 0,
|
|
`isRotated` BOOLEAN NOT NULL DEFAULT false,
|
|
`positionX` INTEGER NOT NULL DEFAULT 0,
|
|
`positionY` INTEGER NOT NULL DEFAULT 0,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `ZoneEventTile` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`zoneId` INTEGER NOT NULL,
|
|
`type` ENUM('BLOCK', 'TELEPORT', 'NPC', 'ITEM') NOT NULL,
|
|
`positionX` INTEGER NOT NULL,
|
|
`positionY` INTEGER NOT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `ZoneEventTileTeleport` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`zoneEventTileId` VARCHAR(191) NOT NULL,
|
|
`toZoneId` INTEGER NOT NULL,
|
|
`toRotation` INTEGER NOT NULL,
|
|
`toPositionX` INTEGER NOT NULL,
|
|
`toPositionY` INTEGER NOT NULL,
|
|
|
|
UNIQUE INDEX `ZoneEventTileTeleport_zoneEventTileId_key`(`zoneEventTileId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `SpriteAction` ADD CONSTRAINT `SpriteAction_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `Item` ADD CONSTRAINT `Item_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `PasswordResetToken` ADD CONSTRAINT `PasswordResetToken_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- 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;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `Character` ADD CONSTRAINT `Character_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- 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_characterHairId_fkey` FOREIGN KEY (`characterHairId`) 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;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CharacterItem` ADD CONSTRAINT `CharacterItem_itemId_fkey` FOREIGN KEY (`itemId`) REFERENCES `Item`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CharacterEquipment` ADD CONSTRAINT `CharacterEquipment_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CharacterEquipment` ADD CONSTRAINT `CharacterEquipment_itemId_fkey` FOREIGN KEY (`itemId`) REFERENCES `Item`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ZoneEffect` ADD CONSTRAINT `ZoneEffect_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ZoneObject` ADD CONSTRAINT `ZoneObject_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ZoneObject` ADD CONSTRAINT `ZoneObject_objectId_fkey` FOREIGN KEY (`objectId`) REFERENCES `Object`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ZoneEventTile` ADD CONSTRAINT `ZoneEventTile_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ZoneEventTileTeleport` ADD CONSTRAINT `ZoneEventTileTeleport_zoneEventTileId_fkey` FOREIGN KEY (`zoneEventTileId`) REFERENCES `ZoneEventTile`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ZoneEventTileTeleport` ADD CONSTRAINT `ZoneEventTileTeleport_toZoneId_fkey` FOREIGN KEY (`toZoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|