feat: leveling system

This commit is contained in:
2026-03-17 15:17:36 +00:00
parent 0354fdc032
commit 2bce787c05
24 changed files with 1840 additions and 3 deletions
+31
View File
@@ -0,0 +1,31 @@
-- 1) Ensure the new table exists
CREATE TABLE IF NOT EXISTS levelrewards (
guild_id BIGINT NOT NULL,
levelreq INT NOT NULL,
role BIGINT NOT NULL,
PRIMARY KEY (guild_id, levelreq)
);
-- 2) Backfill from legacy columns (only rows that have both values)
INSERT INTO levelrewards (guild_id, levelreq, role)
SELECT guild_id, levelreq, role
FROM levelsettings
WHERE role IS NOT NULL
AND levelreq IS NOT NULL
ON CONFLICT (guild_id, levelreq)
DO UPDATE SET role = EXCLUDED.role;
SELECT
(SELECT COUNT(*)
FROM levelsettings
WHERE role IS NOT NULL AND levelreq IS NOT NULL) AS legacy_reward_rows,
(SELECT COUNT(*)
FROM levelrewards) AS levelrewards_rows;
SELECT ls.guild_id, ls.levelreq, ls.role
FROM levelsettings ls
LEFT JOIN levelrewards lr
ON lr.guild_id = ls.guild_id AND lr.levelreq = ls.levelreq
WHERE ls.role IS NOT NULL
AND ls.levelreq IS NOT NULL
AND lr.guild_id IS NULL;