All checks were successful
Build / build (push) Successful in 1m44s
Remove all local level storage concepts and load levels exclusively from Supabase cloud. Simplifies LevelRegistry from 380+ lines to ~50 lines. Uses CloudLevelEntry directly throughout the codebase instead of wrapper types like LevelDirectoryEntry. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
52 lines
1.9 KiB
SQL
52 lines
1.9 KiB
SQL
-- ===========================================
|
|
-- LEADERBOARD USER MAPPING MIGRATION
|
|
-- Migrates leaderboard from Auth0 IDs to internal UUIDs
|
|
-- Normalizes player_name to users table
|
|
-- ===========================================
|
|
|
|
-- ===========================================
|
|
-- CREATE USER RECORDS FOR EXISTING LEADERBOARD ENTRIES
|
|
-- ===========================================
|
|
|
|
-- Create user records for any Auth0 IDs in leaderboard that don't have users yet
|
|
-- Uses player_name from most recent entry as initial display_name
|
|
-- DISTINCT ON ensures only one row per user_id (the most recent by created_at)
|
|
INSERT INTO users (auth0_id, display_name)
|
|
SELECT DISTINCT ON (l.user_id) l.user_id, l.player_name
|
|
FROM leaderboard l
|
|
WHERE l.user_id IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM users u WHERE u.auth0_id = l.user_id)
|
|
ORDER BY l.user_id, l.created_at DESC
|
|
ON CONFLICT (auth0_id) DO NOTHING;
|
|
|
|
-- ===========================================
|
|
-- ADD AND POPULATE INTERNAL USER ID
|
|
-- ===========================================
|
|
|
|
-- Add internal_user_id column (will replace user_id)
|
|
ALTER TABLE leaderboard
|
|
ADD COLUMN internal_user_id UUID REFERENCES users(id);
|
|
|
|
-- Populate internal_user_id from existing user_id (auth0_id)
|
|
UPDATE leaderboard l
|
|
SET internal_user_id = u.id
|
|
FROM users u
|
|
WHERE l.user_id = u.auth0_id;
|
|
|
|
-- Create index for new column
|
|
CREATE INDEX idx_leaderboard_internal_user_id ON leaderboard(internal_user_id);
|
|
|
|
-- ===========================================
|
|
-- DROP OLD COLUMNS AND RENAME
|
|
-- ===========================================
|
|
|
|
-- Drop old columns (player_name normalized to users table, user_id replaced by UUID)
|
|
ALTER TABLE leaderboard DROP COLUMN player_name;
|
|
ALTER TABLE leaderboard DROP COLUMN user_id;
|
|
|
|
-- Rename internal_user_id to user_id for consistency
|
|
ALTER TABLE leaderboard RENAME COLUMN internal_user_id TO user_id;
|
|
|
|
-- Rename index to match new column name
|
|
ALTER INDEX idx_leaderboard_internal_user_id RENAME TO idx_leaderboard_user_id;
|