9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-26 18:19:10 +00:00
Files
HuskSync/common/src/main/resources/database/mariadb_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

57 lines
1.9 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`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
CREATE INDEX IF NOT EXISTS `%users_table%_username` ON `%users_table%` (`username`);
-- 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
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_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`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_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
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;