9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-22 08:09:20 +00:00
Files
HuskSync/common/src/main/resources/database/mysql_schema.sql
William 904c65ba39 feat: rework locked maps syncing (#464)
* Better maps syncing (#2)

* Do not create new views for maps from current world

* Fix maps in shulkers not converting

* Add bundle support for map conversion

* Rework map sync

* Fix empty statements in database

* Fix missing imports

* Rename connectMapIds -> bindMapIds

* Use data adapter to save maps

* Split Mongo readMapData

* Split MySQL readMapData

* Split Postgres readMapData

* Update database schemas

Use server names instead of world UUIDs

* Update Database class

* Update MongoDbDatabase class

* Update MySqlDatabase class

* Update PostgresDatabase class

* Update BukkitMapPersister class

Use server names instead of world UUIDs

* Remove unused code

* Add my nickname to contributors :)

* Start implementing Redis map caching

* Continue implementing Redis map caching

* Bind map ids on Redis before writing to DB

* Finish implementing Redis map data caching

* refactor: decouple new map logic Redis caching from DB

* test: enable debug logging in test suite

* docs: update docs with new username method

* feat: adjust a method name

---------

Co-authored-by: Sóla Lusøt <60041069+solaluset@users.noreply.github.com>
2025-03-07 16:06:27 +00:00

52 lines
1.7 KiB
SQL

# Set the storage engine
SET DEFAULT_STORAGE_ENGINE = INNODB;
# Enable foreign key constraints
SET FOREIGN_KEY_CHECKS = 1;
# Create the users table if it does not exist
CREATE TABLE IF NOT EXISTS `%users_table%`
(
`uuid` char(36) NOT NULL UNIQUE,
`username` varchar(16) NOT NULL,
PRIMARY KEY (`uuid`)
) CHARACTER SET utf8
COLLATE utf8_unicode_ci;
# Create the user data table if it does not exist
CREATE TABLE IF NOT EXISTS `%user_data_table%`
(
`version_uuid` char(36) NOT NULL UNIQUE,
`player_uuid` char(36) NOT NULL,
`timestamp` datetime NOT NULL,
`save_cause` varchar(32) NOT NULL,
`pinned` boolean NOT NULL DEFAULT FALSE,
`data` longblob NOT NULL,
PRIMARY KEY (`version_uuid`, `player_uuid`),
FOREIGN KEY (`player_uuid`) REFERENCES `%users_table%` (`uuid`) ON DELETE CASCADE
) CHARACTER SET utf8
COLLATE utf8_unicode_ci;
# Create the map data table if it does not exist
CREATE TABLE IF NOT EXISTS `%map_data_table%`
(
`server_name` varchar(32) NOT NULL,
`map_id` int NOT NULL,
`data` longblob NOT NULL,
PRIMARY KEY (`server_name`, `map_id`)
) CHARACTER SET utf8
COLLATE utf8_unicode_ci;
# Create the map ids table if it does not exist
CREATE TABLE IF NOT EXISTS `%map_ids_table%`
(
`from_server_name` varchar(32) NOT NULL,
`from_id` int NOT NULL,
`to_server_name` varchar(32) NOT NULL,
`to_id` int NOT NULL,
PRIMARY KEY (`from_server_name`, `from_id`, `to_server_name`),
FOREIGN KEY (`from_server_name`, `from_id`) REFERENCES `%map_data_table%` (`server_name`, `map_id`) ON DELETE CASCADE
) CHARACTER SET utf8
COLLATE utf8_unicode_ci;