Update JdbiGuildRepository.java

This commit is contained in:
2026-05-28 17:57:30 -04:00
parent e1a6884db7
commit 610f1be6f7
@@ -43,7 +43,6 @@ public class JdbiGuildRepository implements GuildRepository
this.membersTable = storage.table("members");
this.warpsTable = storage.table("warps");
this.invitesTable = storage.table("invites");
ensureSchema();
}
@Override
@@ -344,175 +343,6 @@ public class JdbiGuildRepository implements GuildRepository
return e;
}
private void ensureSchema()
{
try
{
jdbi.useHandle(h ->
{
String productName = h.getConnection().getMetaData().getDatabaseProductName().toLowerCase(Locale.ROOT);
schemaStatements(productName).forEach(sql -> h.createUpdate(sql).execute());
});
}
catch (Exception e)
{
throw new IllegalStateException("Failed to create guild tables", e);
}
}
private List<String> schemaStatements(String productName)
{
if (productName.contains("sqlite"))
{
return List.of(
"CREATE TABLE IF NOT EXISTS " + guildsTable + " (" +
"guild_uuid VARCHAR(46) NOT NULL PRIMARY KEY, " +
"name VARCHAR(64) NOT NULL UNIQUE, " +
"prefix VARCHAR(64), " +
"owner_uuid VARCHAR(46) NOT NULL, " +
"created_at BIGINT NOT NULL, " +
"home_world VARCHAR(128), " +
"home_x DOUBLE, " +
"home_y DOUBLE, " +
"home_z DOUBLE, " +
"home_yaw FLOAT, " +
"home_pitch FLOAT, " +
"motd VARCHAR(3000), " +
"tag_enabled BOOLEAN NOT NULL DEFAULT 1, " +
"is_public BOOLEAN NOT NULL DEFAULT 0" +
")",
"CREATE TABLE IF NOT EXISTS " + membersTable + " (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"guild_uuid VARCHAR(46) NOT NULL, " +
"player_uuid VARCHAR(46) NOT NULL, " +
"role VARCHAR(20) NOT NULL, " +
"joined_at BIGINT NOT NULL, " +
"UNIQUE (guild_uuid, player_uuid)" +
")",
"CREATE TABLE IF NOT EXISTS " + warpsTable + " (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"guild_uuid VARCHAR(46) NOT NULL, " +
"name VARCHAR(16) NOT NULL, " +
"world VARCHAR(128) NOT NULL, " +
"x DOUBLE NOT NULL, " +
"y DOUBLE NOT NULL, " +
"z DOUBLE NOT NULL, " +
"yaw FLOAT NOT NULL, " +
"pitch FLOAT NOT NULL, " +
"UNIQUE (guild_uuid, name)" +
")",
"CREATE TABLE IF NOT EXISTS " + invitesTable + " (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"guild_uuid VARCHAR(46) NOT NULL, " +
"inviter_uuid VARCHAR(46) NOT NULL, " +
"invitee_uuid VARCHAR(46) NOT NULL, " +
"expires_at BIGINT NOT NULL, " +
"UNIQUE (guild_uuid, invitee_uuid)" +
")"
);
}
if (productName.contains("postgres"))
{
return List.of(
"CREATE TABLE IF NOT EXISTS " + guildsTable + " (" +
"guild_uuid VARCHAR(46) NOT NULL PRIMARY KEY, " +
"name VARCHAR(64) NOT NULL UNIQUE, " +
"prefix VARCHAR(64), " +
"owner_uuid VARCHAR(46) NOT NULL, " +
"created_at BIGINT NOT NULL, " +
"home_world VARCHAR(128), " +
"home_x DOUBLE PRECISION, " +
"home_y DOUBLE PRECISION, " +
"home_z DOUBLE PRECISION, " +
"home_yaw REAL, " +
"home_pitch REAL, " +
"motd VARCHAR(3000), " +
"tag_enabled BOOLEAN NOT NULL DEFAULT TRUE, " +
"is_public BOOLEAN NOT NULL DEFAULT FALSE" +
")",
"CREATE TABLE IF NOT EXISTS " + membersTable + " (" +
"id BIGSERIAL PRIMARY KEY, " +
"guild_uuid VARCHAR(46) NOT NULL, " +
"player_uuid VARCHAR(46) NOT NULL, " +
"role VARCHAR(20) NOT NULL, " +
"joined_at BIGINT NOT NULL, " +
"CONSTRAINT uq_members_guild_player UNIQUE (guild_uuid, player_uuid)" +
")",
"CREATE TABLE IF NOT EXISTS " + warpsTable + " (" +
"id BIGSERIAL PRIMARY KEY, " +
"guild_uuid VARCHAR(46) NOT NULL, " +
"name VARCHAR(16) NOT NULL, " +
"world VARCHAR(128) NOT NULL, " +
"x DOUBLE PRECISION NOT NULL, " +
"y DOUBLE PRECISION NOT NULL, " +
"z DOUBLE PRECISION NOT NULL, " +
"yaw REAL NOT NULL, " +
"pitch REAL NOT NULL, " +
"CONSTRAINT uq_warps_guild_name UNIQUE (guild_uuid, name)" +
")",
"CREATE TABLE IF NOT EXISTS " + invitesTable + " (" +
"id BIGSERIAL PRIMARY KEY, " +
"guild_uuid VARCHAR(46) NOT NULL, " +
"inviter_uuid VARCHAR(46) NOT NULL, " +
"invitee_uuid VARCHAR(46) NOT NULL, " +
"expires_at BIGINT NOT NULL, " +
"CONSTRAINT uq_invites_guild_invitee UNIQUE (guild_uuid, invitee_uuid)" +
")"
);
}
return List.of(
"CREATE TABLE IF NOT EXISTS " + guildsTable + " (" +
"`guild_uuid` VARCHAR(46) NOT NULL, " +
"`name` VARCHAR(64) NOT NULL, " +
"`prefix` VARCHAR(64), " +
"`owner_uuid` VARCHAR(46) NOT NULL, " +
"`created_at` BIGINT NOT NULL, " +
"`home_world` VARCHAR(128), " +
"`home_x` DOUBLE, " +
"`home_y` DOUBLE, " +
"`home_z` DOUBLE, " +
"`home_yaw` FLOAT, " +
"`home_pitch` FLOAT, " +
"`motd` VARCHAR(3000), " +
"`tag_enabled` BOOLEAN NOT NULL DEFAULT TRUE, " +
"`is_public` BOOLEAN NOT NULL DEFAULT FALSE, " +
"PRIMARY KEY (`guild_uuid`), " +
"UNIQUE KEY `uq_guilds_name` (`name`)" +
")",
"CREATE TABLE IF NOT EXISTS " + membersTable + " (" +
"`id` BIGINT NOT NULL AUTO_INCREMENT, " +
"`guild_uuid` VARCHAR(46) NOT NULL, " +
"`player_uuid` VARCHAR(46) NOT NULL, " +
"`role` VARCHAR(20) NOT NULL, " +
"`joined_at` BIGINT NOT NULL, " +
"PRIMARY KEY (`id`), " +
"UNIQUE KEY `uq_members_guild_player` (`guild_uuid`, `player_uuid`)" +
")",
"CREATE TABLE IF NOT EXISTS " + warpsTable + " (" +
"`id` BIGINT NOT NULL AUTO_INCREMENT, " +
"`guild_uuid` VARCHAR(46) NOT NULL, " +
"`name` VARCHAR(16) NOT NULL, " +
"`world` VARCHAR(128) NOT NULL, " +
"`x` DOUBLE NOT NULL, " +
"`y` DOUBLE NOT NULL, " +
"`z` DOUBLE NOT NULL, " +
"`yaw` FLOAT NOT NULL, " +
"`pitch` FLOAT NOT NULL, " +
"PRIMARY KEY (`id`), " +
"UNIQUE KEY `uq_warps_guild_name` (`guild_uuid`, `name`)" +
")",
"CREATE TABLE IF NOT EXISTS " + invitesTable + " (" +
"`id` BIGINT NOT NULL AUTO_INCREMENT, " +
"`guild_uuid` VARCHAR(46) NOT NULL, " +
"`inviter_uuid` VARCHAR(46) NOT NULL, " +
"`invitee_uuid` VARCHAR(46) NOT NULL, " +
"`expires_at` BIGINT NOT NULL, " +
"PRIMARY KEY (`id`), " +
"UNIQUE KEY `uq_invites_guild_invitee` (`guild_uuid`, `invitee_uuid`)" +
")"
);
}
private Guild toGuildBase(GuildEntity entity)
{
String timezone = Guilds.get().api().configuration().mainConfig().getString("server.timezone", "Etc/UTC");