From 47be8597bf2629d4736ad2e0101e09b3c3573321 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sat, 15 Feb 2025 16:39:39 +0100 Subject: [PATCH] Added pivot point logic --- src/entities/base/mapObject.ts | 16 +- .../assetManager/mapObject/update.ts | 2 + src/migrations/.snapshot-game.json | 416 ++++++++++++++---- src/migrations/Migration20250207212301.ts | 126 ------ src/migrations/Migration20250215152716.ts | 190 ++++++++ tsconfig.json | 2 +- 6 files changed, 527 insertions(+), 225 deletions(-) delete mode 100644 src/migrations/Migration20250207212301.ts create mode 100644 src/migrations/Migration20250215152716.ts diff --git a/src/entities/base/mapObject.ts b/src/entities/base/mapObject.ts index 647f0d7..2663acb 100644 --- a/src/entities/base/mapObject.ts +++ b/src/entities/base/mapObject.ts @@ -10,8 +10,11 @@ export class BaseMapObject extends BaseEntity { @Property() name!: string - @Property({ type: 'json', nullable: true }) - tags?: any + @Property({ type: 'json' }) + tags: string[] = [] + + @Property({ type: 'json' }) + pivotPoints: { x: number; y: number; }[] = [] @Property({ type: 'decimal', precision: 10, scale: 2 }) originX = 0 @@ -61,6 +64,15 @@ export class BaseMapObject extends BaseEntity { return this.tags } + setPivotPoints(pivotPoints: { x: number; y: number; }[]) { + this.pivotPoints = pivotPoints + return this + } + + getPivotPoints() { + return this.pivotPoints + } + setOriginX(originX: number) { this.originX = originX return this diff --git a/src/events/gameMaster/assetManager/mapObject/update.ts b/src/events/gameMaster/assetManager/mapObject/update.ts index 77d800e..0bc1495 100644 --- a/src/events/gameMaster/assetManager/mapObject/update.ts +++ b/src/events/gameMaster/assetManager/mapObject/update.ts @@ -7,6 +7,7 @@ type Payload = { id: UUID name: string tags: string[] + pivotPoints: { x: number; y: number; }[] originX: number originY: number frameRate: number @@ -30,6 +31,7 @@ export default class MapObjectUpdateEvent extends BaseEvent { if (data.name !== undefined) mapObject.name = data.name if (data.tags !== undefined) mapObject.tags = data.tags + if (data.pivotPoints !== undefined) mapObject.pivotPoints = data.pivotPoints if (data.originX !== undefined) mapObject.originX = data.originX if (data.originY !== undefined) mapObject.originY = data.originY if (data.frameRate !== undefined) mapObject.frameRate = data.frameRate diff --git a/src/migrations/.snapshot-game.json b/src/migrations/.snapshot-game.json index 8091ff7..3a6735c 100644 --- a/src/migrations/.snapshot-game.json +++ b/src/migrations/.snapshot-game.json @@ -91,7 +91,9 @@ "indexes": [ { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -148,7 +150,9 @@ "name": "map_effect", "indexes": [ { - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "composite": false, "keyName": "map_effect_map_id_index", "constraint": false, @@ -157,7 +161,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -168,9 +174,13 @@ "foreignKeys": { "map_effect_map_id_foreign": { "constraintName": "map_effect_map_id_foreign", - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "localTableName": "map_effect", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map", "deleteRule": "cascade", "updateRule": "cascade" @@ -207,7 +217,12 @@ "autoincrement": false, "primary": false, "nullable": false, - "enumItems": ["BLOCK", "TELEPORT", "NPC", "ITEM"], + "enumItems": [ + "BLOCK", + "TELEPORT", + "NPC", + "ITEM" + ], "mappedType": "enum" }, "position_x": { @@ -244,7 +259,9 @@ "name": "map_event_tile", "indexes": [ { - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "composite": false, "keyName": "map_event_tile_map_id_index", "constraint": false, @@ -252,7 +269,9 @@ "unique": false }, { - "columnNames": ["teleport_id"], + "columnNames": [ + "teleport_id" + ], "composite": false, "keyName": "map_event_tile_teleport_id_unique", "constraint": true, @@ -261,7 +280,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -272,18 +293,26 @@ "foreignKeys": { "map_event_tile_map_id_foreign": { "constraintName": "map_event_tile_map_id_foreign", - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "localTableName": "map_event_tile", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map", "deleteRule": "cascade", "updateRule": "cascade" }, "map_event_tile_teleport_id_foreign": { "constraintName": "map_event_tile_teleport_id_foreign", - "columnNames": ["teleport_id"], + "columnNames": [ + "teleport_id" + ], "localTableName": "map_event_tile", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map_event_tile_teleport", "deleteRule": "set null", "updateRule": "cascade" @@ -357,7 +386,9 @@ "name": "map_event_tile_teleport", "indexes": [ { - "columnNames": ["map_event_tile_id"], + "columnNames": [ + "map_event_tile_id" + ], "composite": false, "keyName": "map_event_tile_teleport_map_event_tile_id_unique", "constraint": true, @@ -365,7 +396,9 @@ "unique": true }, { - "columnNames": ["to_map_id"], + "columnNames": [ + "to_map_id" + ], "composite": false, "keyName": "map_event_tile_teleport_to_map_id_index", "constraint": false, @@ -374,7 +407,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -385,18 +420,26 @@ "foreignKeys": { "map_event_tile_teleport_map_event_tile_id_foreign": { "constraintName": "map_event_tile_teleport_map_event_tile_id_foreign", - "columnNames": ["map_event_tile_id"], + "columnNames": [ + "map_event_tile_id" + ], "localTableName": "map_event_tile_teleport", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map_event_tile", "deleteRule": "cascade", "updateRule": "cascade" }, "map_event_tile_teleport_to_map_id_foreign": { "constraintName": "map_event_tile_teleport_to_map_id_foreign", - "columnNames": ["to_map_id"], + "columnNames": [ + "to_map_id" + ], "localTableName": "map_event_tile_teleport", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map", "deleteRule": "cascade", "updateRule": "cascade" @@ -432,7 +475,17 @@ "unsigned": false, "autoincrement": false, "primary": false, - "nullable": true, + "nullable": false, + "length": null, + "mappedType": "json" + }, + "pivot_points": { + "name": "pivot_points", + "type": "json", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, "length": null, "mappedType": "json" }, @@ -518,7 +571,9 @@ "indexes": [ { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -598,7 +653,9 @@ "name": "placed_map_object", "indexes": [ { - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "composite": false, "keyName": "placed_map_object_map_id_index", "constraint": false, @@ -606,7 +663,9 @@ "unique": false }, { - "columnNames": ["map_object_id"], + "columnNames": [ + "map_object_id" + ], "composite": false, "keyName": "placed_map_object_map_object_id_index", "constraint": false, @@ -615,7 +674,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -626,18 +687,26 @@ "foreignKeys": { "placed_map_object_map_id_foreign": { "constraintName": "placed_map_object_map_id_foreign", - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "localTableName": "placed_map_object", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map", "deleteRule": "cascade", "updateRule": "cascade" }, "placed_map_object_map_object_id_foreign": { "constraintName": "placed_map_object_map_object_id_foreign", - "columnNames": ["map_object_id"], + "columnNames": [ + "map_object_id" + ], "localTableName": "placed_map_object", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map_object", "deleteRule": "cascade", "updateRule": "cascade" @@ -692,7 +761,9 @@ "indexes": [ { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -743,7 +814,16 @@ "autoincrement": false, "primary": false, "nullable": false, - "enumItems": ["WEAPON", "HELMET", "CHEST", "LEGS", "BOOTS", "GLOVES", "RING", "NECKLACE"], + "enumItems": [ + "WEAPON", + "HELMET", + "CHEST", + "LEGS", + "BOOTS", + "GLOVES", + "RING", + "NECKLACE" + ], "mappedType": "enum" }, "stackable": { @@ -765,7 +845,13 @@ "primary": false, "nullable": false, "default": "'COMMON'", - "enumItems": ["COMMON", "UNCOMMON", "RARE", "EPIC", "LEGENDARY"], + "enumItems": [ + "COMMON", + "UNCOMMON", + "RARE", + "EPIC", + "LEGENDARY" + ], "mappedType": "enum" }, "sprite_id": { @@ -802,7 +888,9 @@ "name": "item", "indexes": [ { - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "composite": false, "keyName": "item_sprite_id_index", "constraint": false, @@ -811,7 +899,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -822,9 +912,13 @@ "foreignKeys": { "item_sprite_id_foreign": { "constraintName": "item_sprite_id_foreign", - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "localTableName": "item", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "sprite", "deleteRule": "set null", "updateRule": "cascade" @@ -861,7 +955,10 @@ "autoincrement": false, "primary": false, "nullable": false, - "enumItems": ["MALE", "FEMALE"], + "enumItems": [ + "MALE", + "FEMALE" + ], "mappedType": "enum" }, "race": { @@ -871,7 +968,13 @@ "autoincrement": false, "primary": false, "nullable": false, - "enumItems": ["HUMAN", "ELF", "DWARF", "ORC", "GOBLIN"], + "enumItems": [ + "HUMAN", + "ELF", + "DWARF", + "ORC", + "GOBLIN" + ], "mappedType": "enum" }, "is_selectable": { @@ -919,7 +1022,9 @@ "name": "character_type", "indexes": [ { - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "composite": false, "keyName": "character_type_sprite_id_index", "constraint": false, @@ -928,7 +1033,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -939,9 +1046,13 @@ "foreignKeys": { "character_type_sprite_id_foreign": { "constraintName": "character_type_sprite_id_foreign", - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "localTableName": "character_type", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "sprite", "deleteRule": "set null", "updateRule": "cascade" @@ -1027,7 +1138,9 @@ "name": "character_hair", "indexes": [ { - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "composite": false, "keyName": "character_hair_sprite_id_index", "constraint": false, @@ -1036,7 +1149,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1047,9 +1162,13 @@ "foreignKeys": { "character_hair_sprite_id_foreign": { "constraintName": "character_hair_sprite_id_foreign", - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "localTableName": "character_hair", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "sprite", "deleteRule": "set null", "updateRule": "cascade" @@ -1160,7 +1279,9 @@ "name": "sprite_action", "indexes": [ { - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "composite": false, "keyName": "sprite_action_sprite_id_index", "constraint": false, @@ -1169,7 +1290,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1180,9 +1303,13 @@ "foreignKeys": { "sprite_action_sprite_id_foreign": { "constraintName": "sprite_action_sprite_id_foreign", - "columnNames": ["sprite_id"], + "columnNames": [ + "sprite_id" + ], "localTableName": "sprite_action", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "sprite", "deleteRule": "cascade", "updateRule": "cascade" @@ -1247,7 +1374,9 @@ "indexes": [ { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1315,7 +1444,9 @@ "name": "user", "indexes": [ { - "columnNames": ["username"], + "columnNames": [ + "username" + ], "composite": false, "keyName": "user_username_unique", "constraint": true, @@ -1323,7 +1454,9 @@ "unique": true }, { - "columnNames": ["email"], + "columnNames": [ + "email" + ], "composite": false, "keyName": "user_email_unique", "constraint": true, @@ -1332,7 +1465,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1389,7 +1524,9 @@ "name": "password_reset_token", "indexes": [ { - "columnNames": ["user_id"], + "columnNames": [ + "user_id" + ], "composite": false, "keyName": "password_reset_token_user_id_index", "constraint": false, @@ -1397,7 +1534,9 @@ "unique": false }, { - "columnNames": ["token"], + "columnNames": [ + "token" + ], "composite": false, "keyName": "password_reset_token_token_unique", "constraint": true, @@ -1406,7 +1545,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1417,9 +1558,13 @@ "foreignKeys": { "password_reset_token_user_id_foreign": { "constraintName": "password_reset_token_user_id_foreign", - "columnNames": ["user_id"], + "columnNames": [ + "user_id" + ], "localTableName": "password_reset_token", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "user", "deleteRule": "cascade", "updateRule": "cascade" @@ -1647,7 +1792,9 @@ "name": "character", "indexes": [ { - "columnNames": ["user_id"], + "columnNames": [ + "user_id" + ], "composite": false, "keyName": "character_user_id_index", "constraint": false, @@ -1655,7 +1802,9 @@ "unique": false }, { - "columnNames": ["name"], + "columnNames": [ + "name" + ], "composite": false, "keyName": "character_name_unique", "constraint": true, @@ -1663,7 +1812,9 @@ "unique": true }, { - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "composite": false, "keyName": "character_map_id_index", "constraint": false, @@ -1671,7 +1822,9 @@ "unique": false }, { - "columnNames": ["character_type_id"], + "columnNames": [ + "character_type_id" + ], "composite": false, "keyName": "character_character_type_id_index", "constraint": false, @@ -1679,7 +1832,9 @@ "unique": false }, { - "columnNames": ["character_hair_id"], + "columnNames": [ + "character_hair_id" + ], "composite": false, "keyName": "character_character_hair_id_index", "constraint": false, @@ -1688,7 +1843,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1699,35 +1856,51 @@ "foreignKeys": { "character_user_id_foreign": { "constraintName": "character_user_id_foreign", - "columnNames": ["user_id"], + "columnNames": [ + "user_id" + ], "localTableName": "character", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "user", "deleteRule": "cascade", "updateRule": "cascade" }, "character_map_id_foreign": { "constraintName": "character_map_id_foreign", - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "localTableName": "character", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map", "updateRule": "cascade" }, "character_character_type_id_foreign": { "constraintName": "character_character_type_id_foreign", - "columnNames": ["character_type_id"], + "columnNames": [ + "character_type_id" + ], "localTableName": "character", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "character_type", "deleteRule": "set null", "updateRule": "cascade" }, "character_character_hair_id_foreign": { "constraintName": "character_character_hair_id_foreign", - "columnNames": ["character_hair_id"], + "columnNames": [ + "character_hair_id" + ], "localTableName": "character", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "character_hair", "deleteRule": "set null", "updateRule": "cascade" @@ -1791,7 +1964,9 @@ "name": "chat", "indexes": [ { - "columnNames": ["character_id"], + "columnNames": [ + "character_id" + ], "composite": false, "keyName": "chat_character_id_index", "constraint": false, @@ -1799,7 +1974,9 @@ "unique": false }, { - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "composite": false, "keyName": "chat_map_id_index", "constraint": false, @@ -1808,7 +1985,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1819,18 +1998,26 @@ "foreignKeys": { "chat_character_id_foreign": { "constraintName": "chat_character_id_foreign", - "columnNames": ["character_id"], + "columnNames": [ + "character_id" + ], "localTableName": "chat", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "character", "deleteRule": "cascade", "updateRule": "cascade" }, "chat_map_id_foreign": { "constraintName": "chat_map_id_foreign", - "columnNames": ["map_id"], + "columnNames": [ + "map_id" + ], "localTableName": "chat", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "map", "deleteRule": "cascade", "updateRule": "cascade" @@ -1884,7 +2071,9 @@ "name": "character_item", "indexes": [ { - "columnNames": ["character_id"], + "columnNames": [ + "character_id" + ], "composite": false, "keyName": "character_item_character_id_index", "constraint": false, @@ -1892,7 +2081,9 @@ "unique": false }, { - "columnNames": ["item_id"], + "columnNames": [ + "item_id" + ], "composite": false, "keyName": "character_item_item_id_index", "constraint": false, @@ -1901,7 +2092,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -1912,18 +2105,26 @@ "foreignKeys": { "character_item_character_id_foreign": { "constraintName": "character_item_character_id_foreign", - "columnNames": ["character_id"], + "columnNames": [ + "character_id" + ], "localTableName": "character_item", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "character", "deleteRule": "cascade", "updateRule": "cascade" }, "character_item_item_id_foreign": { "constraintName": "character_item_item_id_foreign", - "columnNames": ["item_id"], + "columnNames": [ + "item_id" + ], "localTableName": "character_item", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "item", "deleteRule": "cascade", "updateRule": "cascade" @@ -1950,7 +2151,14 @@ "autoincrement": false, "primary": false, "nullable": false, - "enumItems": ["HEAD", "BODY", "ARMS", "LEGS", "NECK", "RING"], + "enumItems": [ + "HEAD", + "BODY", + "ARMS", + "LEGS", + "NECK", + "RING" + ], "mappedType": "enum" }, "character_id": { @@ -1977,7 +2185,9 @@ "name": "character_equipment", "indexes": [ { - "columnNames": ["character_id"], + "columnNames": [ + "character_id" + ], "composite": false, "keyName": "character_equipment_character_id_index", "constraint": false, @@ -1985,7 +2195,9 @@ "unique": false }, { - "columnNames": ["character_item_id"], + "columnNames": [ + "character_item_id" + ], "composite": false, "keyName": "character_equipment_character_item_id_index", "constraint": false, @@ -1994,7 +2206,9 @@ }, { "keyName": "PRIMARY", - "columnNames": ["id"], + "columnNames": [ + "id" + ], "composite": false, "constraint": true, "primary": true, @@ -2005,18 +2219,26 @@ "foreignKeys": { "character_equipment_character_id_foreign": { "constraintName": "character_equipment_character_id_foreign", - "columnNames": ["character_id"], + "columnNames": [ + "character_id" + ], "localTableName": "character_equipment", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "character", "deleteRule": "cascade", "updateRule": "cascade" }, "character_equipment_character_item_id_foreign": { "constraintName": "character_equipment_character_item_id_foreign", - "columnNames": ["character_item_id"], + "columnNames": [ + "character_item_id" + ], "localTableName": "character_equipment", - "referencedColumnNames": ["id"], + "referencedColumnNames": [ + "id" + ], "referencedTableName": "character_item", "deleteRule": "cascade", "updateRule": "cascade" @@ -2063,7 +2285,9 @@ "indexes": [ { "keyName": "PRIMARY", - "columnNames": ["date"], + "columnNames": [ + "date" + ], "composite": false, "constraint": true, "primary": true, diff --git a/src/migrations/Migration20250207212301.ts b/src/migrations/Migration20250207212301.ts deleted file mode 100644 index faae4de..0000000 --- a/src/migrations/Migration20250207212301.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { Migration } from '@mikro-orm/migrations' - -export class Migration20250207212301 extends Migration { - override async up(): Promise { - this.addSql( - `create table \`map\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`width\` int not null default 10, \`height\` int not null default 10, \`tiles\` json null, \`pvp\` tinyint(1) not null default false, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - - this.addSql(`create table \`map_effect\` (\`id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`effect\` varchar(255) not null, \`strength\` int not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - this.addSql(`alter table \`map_effect\` add index \`map_effect_map_id_index\`(\`map_id\`);`) - - this.addSql( - `create table \`map_event_tile\` (\`id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`type\` enum('BLOCK', 'TELEPORT', 'NPC', 'ITEM') not null, \`position_x\` int not null, \`position_y\` int not null, \`teleport_id\` varchar(255) null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`map_event_tile\` add index \`map_event_tile_map_id_index\`(\`map_id\`);`) - this.addSql(`alter table \`map_event_tile\` add unique \`map_event_tile_teleport_id_unique\`(\`teleport_id\`);`) - - this.addSql( - `create table \`map_event_tile_teleport\` (\`id\` varchar(255) not null, \`map_event_tile_id\` varchar(255) not null, \`to_map_id\` varchar(255) not null, \`to_rotation\` int not null, \`to_position_x\` int not null, \`to_position_y\` int not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`map_event_tile_teleport\` add unique \`map_event_tile_teleport_map_event_tile_id_unique\`(\`map_event_tile_id\`);`) - this.addSql(`alter table \`map_event_tile_teleport\` add index \`map_event_tile_teleport_to_map_id_index\`(\`to_map_id\`);`) - - this.addSql( - `create table \`map_object\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`tags\` json null, \`origin_x\` numeric(10,2) not null default 0, \`origin_y\` numeric(10,2) not null default 0, \`frame_rate\` int not null default 0, \`frame_width\` int not null default 0, \`frame_height\` int not null default 0, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - - this.addSql( - `create table \`placed_map_object\` (\`id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`map_object_id\` varchar(255) not null, \`is_rotated\` tinyint(1) not null default false, \`position_x\` int not null default 0, \`position_y\` int not null default 0, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`placed_map_object\` add index \`placed_map_object_map_id_index\`(\`map_id\`);`) - this.addSql(`alter table \`placed_map_object\` add index \`placed_map_object_map_object_id_index\`(\`map_object_id\`);`) - - this.addSql(`create table \`sprite\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - - this.addSql( - `create table \`item\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`description\` varchar(255) not null default '', \`item_type\` enum('WEAPON', 'HELMET', 'CHEST', 'LEGS', 'BOOTS', 'GLOVES', 'RING', 'NECKLACE') not null, \`stackable\` tinyint(1) not null default false, \`rarity\` enum('COMMON', 'UNCOMMON', 'RARE', 'EPIC', 'LEGENDARY') not null default 'COMMON', \`sprite_id\` varchar(255) null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`item\` add index \`item_sprite_id_index\`(\`sprite_id\`);`) - - this.addSql( - `create table \`character_type\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`gender\` enum('MALE', 'FEMALE') not null, \`race\` enum('HUMAN', 'ELF', 'DWARF', 'ORC', 'GOBLIN') not null, \`is_selectable\` tinyint(1) not null default false, \`sprite_id\` varchar(255) null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`character_type\` add index \`character_type_sprite_id_index\`(\`sprite_id\`);`) - - this.addSql( - `create table \`character_hair\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`gender\` varchar(255) not null default 'MALE', \`is_selectable\` tinyint(1) not null default false, \`sprite_id\` varchar(255) null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`character_hair\` add index \`character_hair_sprite_id_index\`(\`sprite_id\`);`) - - this.addSql( - `create table \`sprite_action\` (\`id\` varchar(255) not null, \`sprite_id\` varchar(255) not null, \`action\` varchar(255) not null, \`sprites\` json null, \`origin_x\` numeric(5,2) not null default 0, \`origin_y\` numeric(5,2) not null default 0, \`frame_width\` int not null default 0, \`frame_height\` int not null default 0, \`frame_rate\` int not null default 0, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`sprite_action\` add index \`sprite_action_sprite_id_index\`(\`sprite_id\`);`) - - this.addSql(`create table \`tile\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`tags\` json null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - - this.addSql(`create table \`user\` (\`id\` varchar(255) not null, \`username\` varchar(255) not null, \`email\` varchar(255) not null, \`password\` varchar(255) not null, \`online\` tinyint(1) not null default false, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - this.addSql(`alter table \`user\` add unique \`user_username_unique\`(\`username\`);`) - this.addSql(`alter table \`user\` add unique \`user_email_unique\`(\`email\`);`) - - this.addSql(`create table \`password_reset_token\` (\`id\` varchar(255) not null, \`user_id\` varchar(255) not null, \`token\` varchar(255) not null, \`created_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - this.addSql(`alter table \`password_reset_token\` add index \`password_reset_token_user_id_index\`(\`user_id\`);`) - this.addSql(`alter table \`password_reset_token\` add unique \`password_reset_token_token_unique\`(\`token\`);`) - - this.addSql( - `create table \`character\` (\`id\` varchar(255) not null, \`user_id\` varchar(255) not null, \`name\` varchar(255) not null, \`online\` tinyint(1) not null default false, \`role\` varchar(255) not null default 'player', \`map_id\` varchar(255) not null, \`position_x\` int not null default 0, \`position_y\` int not null default 0, \`rotation\` int not null default 0, \`character_type_id\` varchar(255) null, \`character_hair_id\` varchar(255) null, \`alignment\` int not null default 50, \`hitpoints\` int not null default 100, \`mana\` int not null default 100, \`level\` int not null default 1, \`experience\` int not null default 0, \`strength\` int not null default 10, \`dexterity\` int not null default 10, \`intelligence\` int not null default 10, \`wisdom\` int not null default 10, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`character\` add index \`character_user_id_index\`(\`user_id\`);`) - this.addSql(`alter table \`character\` add unique \`character_name_unique\`(\`name\`);`) - this.addSql(`alter table \`character\` add index \`character_map_id_index\`(\`map_id\`);`) - this.addSql(`alter table \`character\` add index \`character_character_type_id_index\`(\`character_type_id\`);`) - this.addSql(`alter table \`character\` add index \`character_character_hair_id_index\`(\`character_hair_id\`);`) - - this.addSql(`create table \`chat\` (\`id\` varchar(255) not null, \`character_id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`message\` varchar(255) not null, \`created_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - this.addSql(`alter table \`chat\` add index \`chat_character_id_index\`(\`character_id\`);`) - this.addSql(`alter table \`chat\` add index \`chat_map_id_index\`(\`map_id\`);`) - - this.addSql(`create table \`character_item\` (\`id\` varchar(255) not null, \`character_id\` varchar(255) not null, \`item_id\` varchar(255) not null, \`quantity\` int not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`) - this.addSql(`alter table \`character_item\` add index \`character_item_character_id_index\`(\`character_id\`);`) - this.addSql(`alter table \`character_item\` add index \`character_item_item_id_index\`(\`item_id\`);`) - - this.addSql( - `create table \`character_equipment\` (\`id\` varchar(255) not null, \`slot\` enum('HEAD', 'BODY', 'ARMS', 'LEGS', 'NECK', 'RING') not null, \`character_id\` varchar(255) not null, \`character_item_id\` varchar(255) not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;` - ) - this.addSql(`alter table \`character_equipment\` add index \`character_equipment_character_id_index\`(\`character_id\`);`) - this.addSql(`alter table \`character_equipment\` add index \`character_equipment_character_item_id_index\`(\`character_item_id\`);`) - - this.addSql(`create table \`world\` (\`date\` datetime not null, \`rain_percentage\` int not null default 0, \`fog_density\` int not null default 0, primary key (\`date\`)) default character set utf8mb4 engine = InnoDB;`) - - this.addSql(`alter table \`map_effect\` add constraint \`map_effect_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`map_event_tile\` add constraint \`map_event_tile_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`map_event_tile\` add constraint \`map_event_tile_teleport_id_foreign\` foreign key (\`teleport_id\`) references \`map_event_tile_teleport\` (\`id\`) on update cascade on delete set null;`) - - this.addSql(`alter table \`map_event_tile_teleport\` add constraint \`map_event_tile_teleport_map_event_tile_id_foreign\` foreign key (\`map_event_tile_id\`) references \`map_event_tile\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`map_event_tile_teleport\` add constraint \`map_event_tile_teleport_to_map_id_foreign\` foreign key (\`to_map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`placed_map_object\` add constraint \`placed_map_object_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`placed_map_object\` add constraint \`placed_map_object_map_object_id_foreign\` foreign key (\`map_object_id\`) references \`map_object\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`item\` add constraint \`item_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete set null;`) - - this.addSql(`alter table \`character_type\` add constraint \`character_type_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete set null;`) - - this.addSql(`alter table \`character_hair\` add constraint \`character_hair_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete set null;`) - - this.addSql(`alter table \`sprite_action\` add constraint \`sprite_action_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`password_reset_token\` add constraint \`password_reset_token_user_id_foreign\` foreign key (\`user_id\`) references \`user\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`character\` add constraint \`character_user_id_foreign\` foreign key (\`user_id\`) references \`user\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`character\` add constraint \`character_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade;`) - this.addSql(`alter table \`character\` add constraint \`character_character_type_id_foreign\` foreign key (\`character_type_id\`) references \`character_type\` (\`id\`) on update cascade on delete set null;`) - this.addSql(`alter table \`character\` add constraint \`character_character_hair_id_foreign\` foreign key (\`character_hair_id\`) references \`character_hair\` (\`id\`) on update cascade on delete set null;`) - - this.addSql(`alter table \`chat\` add constraint \`chat_character_id_foreign\` foreign key (\`character_id\`) references \`character\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`chat\` add constraint \`chat_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`character_item\` add constraint \`character_item_character_id_foreign\` foreign key (\`character_id\`) references \`character\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`character_item\` add constraint \`character_item_item_id_foreign\` foreign key (\`item_id\`) references \`item\` (\`id\`) on update cascade on delete cascade;`) - - this.addSql(`alter table \`character_equipment\` add constraint \`character_equipment_character_id_foreign\` foreign key (\`character_id\`) references \`character\` (\`id\`) on update cascade on delete cascade;`) - this.addSql(`alter table \`character_equipment\` add constraint \`character_equipment_character_item_id_foreign\` foreign key (\`character_item_id\`) references \`character_item\` (\`id\`) on update cascade on delete cascade;`) - } -} diff --git a/src/migrations/Migration20250215152716.ts b/src/migrations/Migration20250215152716.ts new file mode 100644 index 0000000..49e2473 --- /dev/null +++ b/src/migrations/Migration20250215152716.ts @@ -0,0 +1,190 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20250215152716 extends Migration { + + override async up(): Promise { + this.addSql(`create table \`map\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`width\` int not null default 10, \`height\` int not null default 10, \`tiles\` json null, \`pvp\` tinyint(1) not null default false, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + + this.addSql(`create table \`map_effect\` (\`id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`effect\` varchar(255) not null, \`strength\` int not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`map_effect\` add index \`map_effect_map_id_index\`(\`map_id\`);`); + + this.addSql(`create table \`map_event_tile\` (\`id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`type\` enum('BLOCK', 'TELEPORT', 'NPC', 'ITEM') not null, \`position_x\` int not null, \`position_y\` int not null, \`teleport_id\` varchar(255) null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`map_event_tile\` add index \`map_event_tile_map_id_index\`(\`map_id\`);`); + this.addSql(`alter table \`map_event_tile\` add unique \`map_event_tile_teleport_id_unique\`(\`teleport_id\`);`); + + this.addSql(`create table \`map_event_tile_teleport\` (\`id\` varchar(255) not null, \`map_event_tile_id\` varchar(255) not null, \`to_map_id\` varchar(255) not null, \`to_rotation\` int not null, \`to_position_x\` int not null, \`to_position_y\` int not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`map_event_tile_teleport\` add unique \`map_event_tile_teleport_map_event_tile_id_unique\`(\`map_event_tile_id\`);`); + this.addSql(`alter table \`map_event_tile_teleport\` add index \`map_event_tile_teleport_to_map_id_index\`(\`to_map_id\`);`); + + this.addSql(`create table \`map_object\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`tags\` json not null, \`pivot_points\` json not null, \`origin_x\` numeric(10,2) not null default 0, \`origin_y\` numeric(10,2) not null default 0, \`frame_rate\` int not null default 0, \`frame_width\` int not null default 0, \`frame_height\` int not null default 0, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + + this.addSql(`create table \`placed_map_object\` (\`id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`map_object_id\` varchar(255) not null, \`is_rotated\` tinyint(1) not null default false, \`position_x\` int not null default 0, \`position_y\` int not null default 0, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`placed_map_object\` add index \`placed_map_object_map_id_index\`(\`map_id\`);`); + this.addSql(`alter table \`placed_map_object\` add index \`placed_map_object_map_object_id_index\`(\`map_object_id\`);`); + + this.addSql(`create table \`sprite\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + + this.addSql(`create table \`item\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`description\` varchar(255) not null default '', \`item_type\` enum('WEAPON', 'HELMET', 'CHEST', 'LEGS', 'BOOTS', 'GLOVES', 'RING', 'NECKLACE') not null, \`stackable\` tinyint(1) not null default false, \`rarity\` enum('COMMON', 'UNCOMMON', 'RARE', 'EPIC', 'LEGENDARY') not null default 'COMMON', \`sprite_id\` varchar(255) null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`item\` add index \`item_sprite_id_index\`(\`sprite_id\`);`); + + this.addSql(`create table \`character_type\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`gender\` enum('MALE', 'FEMALE') not null, \`race\` enum('HUMAN', 'ELF', 'DWARF', 'ORC', 'GOBLIN') not null, \`is_selectable\` tinyint(1) not null default false, \`sprite_id\` varchar(255) null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`character_type\` add index \`character_type_sprite_id_index\`(\`sprite_id\`);`); + + this.addSql(`create table \`character_hair\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`gender\` varchar(255) not null default 'MALE', \`is_selectable\` tinyint(1) not null default false, \`sprite_id\` varchar(255) null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`character_hair\` add index \`character_hair_sprite_id_index\`(\`sprite_id\`);`); + + this.addSql(`create table \`sprite_action\` (\`id\` varchar(255) not null, \`sprite_id\` varchar(255) not null, \`action\` varchar(255) not null, \`sprites\` json null, \`origin_x\` numeric(5,2) not null default 0, \`origin_y\` numeric(5,2) not null default 0, \`frame_width\` int not null default 0, \`frame_height\` int not null default 0, \`frame_rate\` int not null default 0, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`sprite_action\` add index \`sprite_action_sprite_id_index\`(\`sprite_id\`);`); + + this.addSql(`create table \`tile\` (\`id\` varchar(255) not null, \`name\` varchar(255) not null, \`tags\` json null, \`created_at\` datetime not null, \`updated_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + + this.addSql(`create table \`user\` (\`id\` varchar(255) not null, \`username\` varchar(255) not null, \`email\` varchar(255) not null, \`password\` varchar(255) not null, \`online\` tinyint(1) not null default false, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`user\` add unique \`user_username_unique\`(\`username\`);`); + this.addSql(`alter table \`user\` add unique \`user_email_unique\`(\`email\`);`); + + this.addSql(`create table \`password_reset_token\` (\`id\` varchar(255) not null, \`user_id\` varchar(255) not null, \`token\` varchar(255) not null, \`created_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`password_reset_token\` add index \`password_reset_token_user_id_index\`(\`user_id\`);`); + this.addSql(`alter table \`password_reset_token\` add unique \`password_reset_token_token_unique\`(\`token\`);`); + + this.addSql(`create table \`character\` (\`id\` varchar(255) not null, \`user_id\` varchar(255) not null, \`name\` varchar(255) not null, \`online\` tinyint(1) not null default false, \`role\` varchar(255) not null default 'player', \`map_id\` varchar(255) not null, \`position_x\` int not null default 0, \`position_y\` int not null default 0, \`rotation\` int not null default 0, \`character_type_id\` varchar(255) null, \`character_hair_id\` varchar(255) null, \`alignment\` int not null default 50, \`hitpoints\` int not null default 100, \`mana\` int not null default 100, \`level\` int not null default 1, \`experience\` int not null default 0, \`strength\` int not null default 10, \`dexterity\` int not null default 10, \`intelligence\` int not null default 10, \`wisdom\` int not null default 10, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`character\` add index \`character_user_id_index\`(\`user_id\`);`); + this.addSql(`alter table \`character\` add unique \`character_name_unique\`(\`name\`);`); + this.addSql(`alter table \`character\` add index \`character_map_id_index\`(\`map_id\`);`); + this.addSql(`alter table \`character\` add index \`character_character_type_id_index\`(\`character_type_id\`);`); + this.addSql(`alter table \`character\` add index \`character_character_hair_id_index\`(\`character_hair_id\`);`); + + this.addSql(`create table \`chat\` (\`id\` varchar(255) not null, \`character_id\` varchar(255) not null, \`map_id\` varchar(255) not null, \`message\` varchar(255) not null, \`created_at\` datetime not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`chat\` add index \`chat_character_id_index\`(\`character_id\`);`); + this.addSql(`alter table \`chat\` add index \`chat_map_id_index\`(\`map_id\`);`); + + this.addSql(`create table \`character_item\` (\`id\` varchar(255) not null, \`character_id\` varchar(255) not null, \`item_id\` varchar(255) not null, \`quantity\` int not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`character_item\` add index \`character_item_character_id_index\`(\`character_id\`);`); + this.addSql(`alter table \`character_item\` add index \`character_item_item_id_index\`(\`item_id\`);`); + + this.addSql(`create table \`character_equipment\` (\`id\` varchar(255) not null, \`slot\` enum('HEAD', 'BODY', 'ARMS', 'LEGS', 'NECK', 'RING') not null, \`character_id\` varchar(255) not null, \`character_item_id\` varchar(255) not null, primary key (\`id\`)) default character set utf8mb4 engine = InnoDB;`); + this.addSql(`alter table \`character_equipment\` add index \`character_equipment_character_id_index\`(\`character_id\`);`); + this.addSql(`alter table \`character_equipment\` add index \`character_equipment_character_item_id_index\`(\`character_item_id\`);`); + + this.addSql(`create table \`world\` (\`date\` datetime not null, \`rain_percentage\` int not null default 0, \`fog_density\` int not null default 0, primary key (\`date\`)) default character set utf8mb4 engine = InnoDB;`); + + this.addSql(`alter table \`map_effect\` add constraint \`map_effect_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`map_event_tile\` add constraint \`map_event_tile_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`map_event_tile\` add constraint \`map_event_tile_teleport_id_foreign\` foreign key (\`teleport_id\`) references \`map_event_tile_teleport\` (\`id\`) on update cascade on delete set null;`); + + this.addSql(`alter table \`map_event_tile_teleport\` add constraint \`map_event_tile_teleport_map_event_tile_id_foreign\` foreign key (\`map_event_tile_id\`) references \`map_event_tile\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`map_event_tile_teleport\` add constraint \`map_event_tile_teleport_to_map_id_foreign\` foreign key (\`to_map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`placed_map_object\` add constraint \`placed_map_object_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`placed_map_object\` add constraint \`placed_map_object_map_object_id_foreign\` foreign key (\`map_object_id\`) references \`map_object\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`item\` add constraint \`item_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete set null;`); + + this.addSql(`alter table \`character_type\` add constraint \`character_type_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete set null;`); + + this.addSql(`alter table \`character_hair\` add constraint \`character_hair_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete set null;`); + + this.addSql(`alter table \`sprite_action\` add constraint \`sprite_action_sprite_id_foreign\` foreign key (\`sprite_id\`) references \`sprite\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`password_reset_token\` add constraint \`password_reset_token_user_id_foreign\` foreign key (\`user_id\`) references \`user\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`character\` add constraint \`character_user_id_foreign\` foreign key (\`user_id\`) references \`user\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`character\` add constraint \`character_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade;`); + this.addSql(`alter table \`character\` add constraint \`character_character_type_id_foreign\` foreign key (\`character_type_id\`) references \`character_type\` (\`id\`) on update cascade on delete set null;`); + this.addSql(`alter table \`character\` add constraint \`character_character_hair_id_foreign\` foreign key (\`character_hair_id\`) references \`character_hair\` (\`id\`) on update cascade on delete set null;`); + + this.addSql(`alter table \`chat\` add constraint \`chat_character_id_foreign\` foreign key (\`character_id\`) references \`character\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`chat\` add constraint \`chat_map_id_foreign\` foreign key (\`map_id\`) references \`map\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`character_item\` add constraint \`character_item_character_id_foreign\` foreign key (\`character_id\`) references \`character\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`character_item\` add constraint \`character_item_item_id_foreign\` foreign key (\`item_id\`) references \`item\` (\`id\`) on update cascade on delete cascade;`); + + this.addSql(`alter table \`character_equipment\` add constraint \`character_equipment_character_id_foreign\` foreign key (\`character_id\`) references \`character\` (\`id\`) on update cascade on delete cascade;`); + this.addSql(`alter table \`character_equipment\` add constraint \`character_equipment_character_item_id_foreign\` foreign key (\`character_item_id\`) references \`character_item\` (\`id\`) on update cascade on delete cascade;`); + } + + override async down(): Promise { + this.addSql(`alter table \`map_effect\` drop foreign key \`map_effect_map_id_foreign\`;`); + + this.addSql(`alter table \`map_event_tile\` drop foreign key \`map_event_tile_map_id_foreign\`;`); + + this.addSql(`alter table \`map_event_tile_teleport\` drop foreign key \`map_event_tile_teleport_to_map_id_foreign\`;`); + + this.addSql(`alter table \`placed_map_object\` drop foreign key \`placed_map_object_map_id_foreign\`;`); + + this.addSql(`alter table \`character\` drop foreign key \`character_map_id_foreign\`;`); + + this.addSql(`alter table \`chat\` drop foreign key \`chat_map_id_foreign\`;`); + + this.addSql(`alter table \`map_event_tile_teleport\` drop foreign key \`map_event_tile_teleport_map_event_tile_id_foreign\`;`); + + this.addSql(`alter table \`map_event_tile\` drop foreign key \`map_event_tile_teleport_id_foreign\`;`); + + this.addSql(`alter table \`placed_map_object\` drop foreign key \`placed_map_object_map_object_id_foreign\`;`); + + this.addSql(`alter table \`item\` drop foreign key \`item_sprite_id_foreign\`;`); + + this.addSql(`alter table \`character_type\` drop foreign key \`character_type_sprite_id_foreign\`;`); + + this.addSql(`alter table \`character_hair\` drop foreign key \`character_hair_sprite_id_foreign\`;`); + + this.addSql(`alter table \`sprite_action\` drop foreign key \`sprite_action_sprite_id_foreign\`;`); + + this.addSql(`alter table \`character_item\` drop foreign key \`character_item_item_id_foreign\`;`); + + this.addSql(`alter table \`character\` drop foreign key \`character_character_type_id_foreign\`;`); + + this.addSql(`alter table \`character\` drop foreign key \`character_character_hair_id_foreign\`;`); + + this.addSql(`alter table \`password_reset_token\` drop foreign key \`password_reset_token_user_id_foreign\`;`); + + this.addSql(`alter table \`character\` drop foreign key \`character_user_id_foreign\`;`); + + this.addSql(`alter table \`chat\` drop foreign key \`chat_character_id_foreign\`;`); + + this.addSql(`alter table \`character_item\` drop foreign key \`character_item_character_id_foreign\`;`); + + this.addSql(`alter table \`character_equipment\` drop foreign key \`character_equipment_character_id_foreign\`;`); + + this.addSql(`alter table \`character_equipment\` drop foreign key \`character_equipment_character_item_id_foreign\`;`); + + this.addSql(`drop table if exists \`map\`;`); + + this.addSql(`drop table if exists \`map_effect\`;`); + + this.addSql(`drop table if exists \`map_event_tile\`;`); + + this.addSql(`drop table if exists \`map_event_tile_teleport\`;`); + + this.addSql(`drop table if exists \`map_object\`;`); + + this.addSql(`drop table if exists \`placed_map_object\`;`); + + this.addSql(`drop table if exists \`sprite\`;`); + + this.addSql(`drop table if exists \`item\`;`); + + this.addSql(`drop table if exists \`character_type\`;`); + + this.addSql(`drop table if exists \`character_hair\`;`); + + this.addSql(`drop table if exists \`sprite_action\`;`); + + this.addSql(`drop table if exists \`tile\`;`); + + this.addSql(`drop table if exists \`user\`;`); + + this.addSql(`drop table if exists \`password_reset_token\`;`); + + this.addSql(`drop table if exists \`character\`;`); + + this.addSql(`drop table if exists \`chat\`;`); + + this.addSql(`drop table if exists \`character_item\`;`); + + this.addSql(`drop table if exists \`character_equipment\`;`); + + this.addSql(`drop table if exists \`world\`;`); + } + +} diff --git a/tsconfig.json b/tsconfig.json index 31ad20c..ccf73fb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,7 @@ "verbatimModuleSyntax": true, "lib": ["ESNext"], "target": "es2022", - "moduleResolution": "NodeNext", + "moduleResolution": "bundler", // Strictness "strict": true,