fix: resolve all remaining audit failures across rust, svelte, and java

This commit is contained in:
scoped committed 2026-09-29 15:51:15 -04:00
1 parent bc12a25a01
commit 590178e41a
35 files changed
+958 -300

No files matched your search

+23
View File
@@ -476,6 +476,29 @@ const MIGRATIONS: &[&str] = &[
);
CREATE INDEX IF NOT EXISTS market_srv ON server_market(server_id, id DESC);
"#,
r#"
ALTER TABLE game_servers ADD COLUMN instance_id TEXT NOT NULL DEFAULT '';
DROP INDEX guild_member_unique;
CREATE INDEX guild_member_uuid ON guild_members(uuid);
CREATE TRIGGER guild_members_instance_unique BEFORE INSERT ON guild_members
WHEN EXISTS (SELECT 1 FROM guild_members gm JOIN guilds g ON g.id = gm.guild_id
WHERE gm.uuid = NEW.uuid AND gm.guild_id <> NEW.guild_id
AND g.instance_id = (SELECT instance_id FROM guilds WHERE id = NEW.guild_id))
BEGIN SELECT RAISE(ABORT, 'Already in a guild for this instance'); END;
CREATE TRIGGER achievement_xp AFTER INSERT ON user_achievements BEGIN
INSERT INTO user_levels(uuid, global_xp, updated_at)
VALUES(NEW.user_uuid, (SELECT MAX(0, xp_reward) FROM achievements WHERE id = NEW.achievement_id), NEW.unlocked_at)
ON CONFLICT(uuid) DO UPDATE SET global_xp = global_xp + excluded.global_xp, updated_at = excluded.updated_at;
END;
INSERT INTO user_levels(uuid, global_xp, updated_at)
SELECT ua.user_uuid, SUM(MAX(0, a.xp_reward)), MAX(ua.unlocked_at) FROM user_achievements ua JOIN achievements a ON a.id = ua.achievement_id GROUP BY ua.user_uuid
ON CONFLICT(uuid) DO UPDATE SET global_xp = global_xp + excluded.global_xp;
CREATE TABLE granted_rewards (uuid TEXT NOT NULL, reward_id INTEGER NOT NULL REFERENCES level_rewards(id) ON DELETE CASCADE,
granted_at TEXT NOT NULL, PRIMARY KEY (uuid, reward_id));
ALTER TABLE server_market ADD COLUMN item_data TEXT;
CREATE TABLE economy_operations (server_id INTEGER NOT NULL REFERENCES game_servers(id) ON DELETE CASCADE,
operation_id TEXT NOT NULL, response TEXT NOT NULL, PRIMARY KEY(server_id, operation_id));
"#,
];
pub async fn connect(data_dir: &Path) -> Result<SqlitePool> {