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]>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
CREATE TABLE IF NOT EXISTS cosmetics (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
type VARCHAR(20) NOT NULL CHECK (type IN ('hat','outfit','accessory')),
|
||||
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 '{}'
|
||||
);
|
||||
@@ -14,12 +14,12 @@ CREATE TABLE IF NOT EXISTS player_cosmetics (
|
||||
);
|
||||
|
||||
INSERT INTO cosmetics (name, type, unlock_level, css_data) VALUES
|
||||
('Chapéu de Aventureiro', 'hat', 2, '{"color":"#8B4513","accent":"#d4a85a"}'),
|
||||
('Roupa de Marinheiro', 'outfit', 3, '{"primary":"#1e3a5f","accent":"#ffffff"}'),
|
||||
('Óculos de Sol', 'accessory', 4, '{"color":"#1a1a1a"}'),
|
||||
('Chapéu de Capitão', 'hat', 5, '{"color":"#1e293b","badge":"#ffd700"}'),
|
||||
('Roupa Dourada', 'outfit', 7, '{"primary":"#d4af37","accent":"#ffd700"}'),
|
||||
('Coroa de Campeão', 'hat', 10, '{"color":"#ffd700","gems":"#e11d48"}')
|
||||
ON CONFLICT DO NOTHING;
|
||||
('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;
|
||||
|
||||
Reference in New Issue
Block a user