CREATE TABLE IF NOT EXISTS cosmetics ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL UNIQUE, type VARCHAR(20) NOT NULL CHECK (type IN ('hair','shirt','pants','shoes','hat','accessory')), unlock_level INTEGER NOT NULL, css_data JSONB NOT NULL DEFAULT '{}' ); CREATE TABLE IF NOT EXISTS player_cosmetics ( id SERIAL PRIMARY KEY, cosmetic_id INTEGER NOT NULL REFERENCES cosmetics(id) ON DELETE CASCADE UNIQUE, equipped BOOLEAN NOT NULL DEFAULT FALSE, unlocked_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ); INSERT INTO cosmetics (name, type, unlock_level, css_data) VALUES ('Cabelo Ruivo', 'hair', 2, '{"color":"#8B1a0a"}'), ('Camisa Marinheiro', 'shirt', 3, '{"color":"#1e3a5f"}'), ('Calças Aventureiro', 'pants', 4, '{"color":"#2d4a1e"}'), ('Botas de Capitão', 'shoes', 5, '{"color":"#8B4513"}'), ('Camisa Dourada', 'shirt', 7, '{"color":"#d4af37"}'), ('Cabelo Platinado', 'hair', 10, '{"color":"#e8e8e8"}') ON CONFLICT (name) DO NOTHING; INSERT INTO schema_migrations (version) VALUES (8) ON CONFLICT DO NOTHING;