feat: otimização de performance e ajustes finais
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
-- Script Final Corrigido - Usa IDs reais do banco
|
||||
-- Insere dados faltantes em todas as tabelas
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
v_min_001 UUID := '6e32517f-5dbc-416a-9632-d920175b8cdd'; -- ID real do MIN-001
|
||||
v_min_002 UUID;
|
||||
v_min_003 UUID;
|
||||
v_ou_001 UUID;
|
||||
v_ou_002 UUID;
|
||||
v_ou_003 UUID;
|
||||
v_ou_004 UUID;
|
||||
v_pos_001 UUID;
|
||||
v_pos_002 UUID;
|
||||
v_pos_003 UUID;
|
||||
v_pos_004 UUID;
|
||||
BEGIN
|
||||
-- Inserir ministerios
|
||||
INSERT INTO ministry (id, code, name, acronym, is_active, created_at, updated_at) VALUES
|
||||
('22222222-2222-2222-2222-222222222222', 'MIN-002', 'Ministerio da Saude Publica', 'MINSAUDE', true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name
|
||||
RETURNING id INTO v_min_002;
|
||||
|
||||
IF v_min_002 IS NULL THEN SELECT id INTO v_min_002 FROM ministry WHERE code = 'MIN-002'; END IF;
|
||||
|
||||
INSERT INTO ministry (id, code, name, acronym, is_active, created_at, updated_at) VALUES
|
||||
('33333333-3333-3333-3333-333333333333', 'MIN-003', 'Ministerio da Educacao Nacional', 'MINEDU', true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name
|
||||
RETURNING id INTO v_min_003;
|
||||
|
||||
IF v_min_003 IS NULL THEN SELECT id INTO v_min_003 FROM ministry WHERE code = 'MIN-003'; END IF;
|
||||
|
||||
RAISE NOTICE 'Ministerios: MIN-001=%, MIN-002=%, MIN-003=%', v_min_001, v_min_002, v_min_003;
|
||||
|
||||
-- Inserir unidades organicas
|
||||
INSERT INTO org_unit (id, code, name, ministry_id, unit_type, is_active, created_at, updated_at) VALUES
|
||||
('44444444-4444-4444-4444-444444444444', 'UO-001', 'Direcao-Geral do Tesouro', v_min_001, 'DIRECTORATE', true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name
|
||||
RETURNING id INTO v_ou_001;
|
||||
|
||||
IF v_ou_001 IS NULL THEN SELECT id INTO v_ou_001 FROM org_unit WHERE code = 'UO-001'; END IF;
|
||||
|
||||
INSERT INTO org_unit (id, code, name, ministry_id, unit_type, is_active, created_at, updated_at) VALUES
|
||||
('55555555-5555-5555-5555-555555555555', 'UO-002', 'Direcao-Geral do Orcamento', v_min_001, 'DIRECTORATE', true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name
|
||||
RETURNING id INTO v_ou_002;
|
||||
|
||||
IF v_ou_002 IS NULL THEN SELECT id INTO v_ou_002 FROM org_unit WHERE code = 'UO-002'; END IF;
|
||||
|
||||
INSERT INTO org_unit (id, code, name, ministry_id, unit_type, is_active, created_at, updated_at) VALUES
|
||||
('66666666-6666-6666-6666-666666666666', 'UO-003', 'Hospital Nacional Simao Mendes', v_min_002, 'HOSPITAL', true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name
|
||||
RETURNING id INTO v_ou_003;
|
||||
|
||||
IF v_ou_003 IS NULL THEN SELECT id INTO v_ou_003 FROM org_unit WHERE code = 'UO-003'; END IF;
|
||||
|
||||
INSERT INTO org_unit (id, code, name, ministry_id, unit_type, is_active, created_at, updated_at) VALUES
|
||||
('77777777-7777-7777-7777-777777777777', 'UO-004', 'Escola Secundaria de Bissau', v_min_003, 'SCHOOL', true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name
|
||||
RETURNING id INTO v_ou_004;
|
||||
|
||||
IF v_ou_004 IS NULL THEN SELECT id INTO v_ou_004 FROM org_unit WHERE code = 'UO-004'; END IF;
|
||||
|
||||
RAISE NOTICE 'Unidades Organicas criadas: %, %, %, %', v_ou_001, v_ou_002, v_ou_003, v_ou_004;
|
||||
|
||||
-- Inserir cargos
|
||||
INSERT INTO position (id, code, title, org_unit_id, is_active, created_at, updated_at) VALUES
|
||||
('88888888-8888-8888-8888-888888888888', 'POS-001', 'Diretor-Geral', v_ou_001, true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET title = EXCLUDED.title;
|
||||
|
||||
INSERT INTO position (id, code, title, org_unit_id, is_active, created_at, updated_at) VALUES
|
||||
('99999999-9999-9999-9999-999999999999', 'POS-002', 'Tecnico Superior', v_ou_002, true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET title = EXCLUDED.title;
|
||||
|
||||
INSERT INTO position (id, code, title, org_unit_id, is_active, created_at, updated_at) VALUES
|
||||
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'POS-003', 'Medico Especialista', v_ou_003, true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET title = EXCLUDED.title;
|
||||
|
||||
INSERT INTO position (id, code, title, org_unit_id, is_active, created_at, updated_at) VALUES
|
||||
('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'POS-004', 'Professor', v_ou_004, true, now(), now())
|
||||
ON CONFLICT (code) DO UPDATE SET title = EXCLUDED.title;
|
||||
|
||||
RAISE NOTICE 'Cargos criados com sucesso';
|
||||
RAISE NOTICE '=== DADOS INSERIDOS COM SUCESSO ===';
|
||||
END $$;
|
||||
|
||||
-- Verificar
|
||||
SELECT 'MINISTERIOS' as tabela, COUNT(*)::text FROM ministry
|
||||
UNION ALL SELECT 'UNIDADES ORGANICAS', COUNT(*)::text FROM org_unit
|
||||
UNION ALL SELECT 'CARGOS', COUNT(*)::text FROM position
|
||||
UNION ALL SELECT 'AGENTES', COUNT(*)::text FROM agents
|
||||
UNION ALL SELECT 'BANCOS', COUNT(*)::text FROM bank;
|
||||
Reference in New Issue
Block a user