Files
carvalho-finances/apps/api/internal/migration/sql/008_cosmetics.sql
T
Mlcavalho1andClaude Sonnet 4.6 2277f4375d fix: migration runner idempotente e seeds com UNIQUE constraint
Runner agora checa schema_migrations antes de rodar cada SQL — sem
reexecução de seeds a cada startup. Quests: UNIQUE(title, quest_type).
Cosmetics: UNIQUE(name), tipos corrigidos para hair/shirt/pants/shoes.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-26 22:01:48 -03:00

26 lines
1.1 KiB
SQL

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;