57 lines
2.1 KiB
PL/PgSQL
57 lines
2.1 KiB
PL/PgSQL
-- ============================================================
|
|
-- Seed: módulo Integraciones (Hostinger + Cloudflare)
|
|
-- Ejecutar en la base de datos PostgreSQL de producción:
|
|
-- psql -h HOST -U usite -d usite -f seed_integraciones.sql
|
|
-- ============================================================
|
|
|
|
BEGIN;
|
|
|
|
-- 1. Insertar módulo "Integraciones" si no existe
|
|
INSERT INTO modules (title, description, modified_at, created_at, updated_at)
|
|
SELECT 'Integraciones', 'Conexión con servicios externos: Hostinger, Cloudflare y más', NOW(), NOW(), NOW()
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM modules WHERE title = 'Integraciones' AND deleted_at IS NULL
|
|
);
|
|
|
|
-- 2. Insertar submódulo Hostinger si no existe
|
|
INSERT INTO submodules (title, description, url, module_id, modified_at, created_at, updated_at)
|
|
SELECT 'Hostinger',
|
|
'Panel de VPS, dominios, hosting y DNS de Hostinger',
|
|
'/app/hostinger',
|
|
(SELECT id FROM modules WHERE title = 'Integraciones' AND deleted_at IS NULL LIMIT 1),
|
|
NOW(), NOW(), NOW()
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM submodules WHERE url = '/app/hostinger' AND deleted_at IS NULL
|
|
);
|
|
|
|
-- 3. Insertar submódulo Cloudflare si no existe
|
|
INSERT INTO submodules (title, description, url, module_id, modified_at, created_at, updated_at)
|
|
SELECT 'Cloudflare',
|
|
'Gestión de zonas, DNS, SSL y firewall en Cloudflare',
|
|
'/app/cloudflare',
|
|
(SELECT id FROM modules WHERE title = 'Integraciones' AND deleted_at IS NULL LIMIT 1),
|
|
NOW(), NOW(), NOW()
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM submodules WHERE url = '/app/cloudflare' AND deleted_at IS NULL
|
|
);
|
|
|
|
-- 4. Asignar ambos submódulos a TODOS los roles (ignorar duplicados)
|
|
INSERT INTO roles_submodules (role_id, submodule_id)
|
|
SELECT r.id, s.id
|
|
FROM roles r
|
|
CROSS JOIN submodules s
|
|
WHERE s.url IN ('/app/hostinger', '/app/cloudflare')
|
|
AND r.deleted_at IS NULL
|
|
AND s.deleted_at IS NULL
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
COMMIT;
|
|
|
|
-- Verificación rápida
|
|
SELECT m.title AS modulo, s.title AS submodulo, s.url
|
|
FROM modules m
|
|
JOIN submodules s ON s.module_id = m.id
|
|
WHERE m.title = 'Integraciones'
|
|
AND m.deleted_at IS NULL
|
|
AND s.deleted_at IS NULL;
|