-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinit.sql
More file actions
79 lines (63 loc) · 3.41 KB
/
Copy pathinit.sql
File metadata and controls
79 lines (63 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
-- Script de inicialización de la base de datos PostgreSQL para INIA
-- Este archivo se ejecuta automáticamente cuando se crea el contenedor de la base de datos
-- Crear extensiones necesarias
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
-- Configurar encoding y locale
SET client_encoding = 'UTF8';
SET default_text_search_config = 'pg_catalog.spanish';
-- Crear esquema si no existe
CREATE SCHEMA IF NOT EXISTS inia;
-- Configurar contraseña del usuario postgres para el middleware
-- El usuario postgres ya existe por defecto en PostgreSQL
-- NOTA: La contraseña se configura en docker-compose mediante POSTGRES_PASSWORD
-- Para docker-compose.dev.yml: usa contraseña hardcodeada (897888fg2)
-- Para docker-compose.ecs.yml: usa contraseña desde .env (${DB_PASSWORD})
-- ALTER USER postgres WITH PASSWORD '897888fg2'; -- COMENTADO: causa conflicto con .env
-- Configurar permisos para postgres (usado por el middleware)
GRANT ALL PRIVILEGES ON DATABASE "Inia" TO postgres;
GRANT ALL PRIVILEGES ON SCHEMA inia TO postgres;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA inia TO postgres;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA inia TO postgres;
-- Configurar secuencias por defecto
ALTER DEFAULT PRIVILEGES IN SCHEMA inia GRANT ALL ON TABLES TO postgres;
ALTER DEFAULT PRIVILEGES IN SCHEMA inia GRANT ALL ON SEQUENCES TO postgres;
-- Crear tabla AUTOCOMPLETADO
CREATE TABLE IF NOT EXISTS inia.AUTOCOMPLETADO (
AUTOCOMPLETADO_ID BIGSERIAL PRIMARY KEY,
AUTOCOMPLETADO_TIPO_DATO VARCHAR(50),
AUTOCOMPLETADO_PARAMETRO VARCHAR(100) NOT NULL,
AUTOCOMPLETADO_VALOR VARCHAR(500) NOT NULL,
AUTOCOMPLETADO_ACTIVO BOOLEAN DEFAULT TRUE
);
-- Crear índice único con función LOWER para evitar duplicados case-insensitive
CREATE UNIQUE INDEX IF NOT EXISTS uk_autocompletado_parametro_valor
ON inia.AUTOCOMPLETADO(AUTOCOMPLETADO_PARAMETRO, LOWER(AUTOCOMPLETADO_VALOR));
-- Crear índice para búsquedas rápidas por parámetro
CREATE INDEX IF NOT EXISTS idx_autocompletado_parametro_activo
ON inia.AUTOCOMPLETADO(AUTOCOMPLETADO_PARAMETRO, AUTOCOMPLETADO_ACTIVO)
WHERE AUTOCOMPLETADO_ACTIVO = TRUE;
GRANT ALL PRIVILEGES ON TABLE inia.AUTOCOMPLETADO TO postgres;
GRANT USAGE, SELECT ON SEQUENCE inia.autocompletado_autocompletado_id_seq TO postgres;
-- Crear tabla USUARIO si no existe (para poder insertar usuario admin por defecto)
CREATE TABLE IF NOT EXISTS inia.USUARIO (
USUARIO_ID BIGSERIAL PRIMARY KEY,
EMAIL VARCHAR(255) UNIQUE NOT NULL,
NOMBRE VARCHAR(255) NOT NULL,
PASSWORD VARCHAR(255) NOT NULL,
TELEFONO VARCHAR(50),
ROL VARCHAR(50) NOT NULL,
USUARIO_ACTIVO BOOLEAN DEFAULT TRUE NOT NULL
);
-- Crear secuencia para USUARIO_ID si no existe
CREATE SEQUENCE IF NOT EXISTS inia.usuario_usuario_id_seq OWNED BY inia.USUARIO.USUARIO_ID;
ALTER TABLE inia.USUARIO ALTER COLUMN USUARIO_ID SET DEFAULT nextval('inia.usuario_usuario_id_seq');
-- Crear índice único para email
CREATE UNIQUE INDEX IF NOT EXISTS idx_usuario_email ON inia.USUARIO(EMAIL);
GRANT ALL PRIVILEGES ON TABLE inia.USUARIO TO postgres;
GRANT USAGE, SELECT ON SEQUENCE inia.usuario_usuario_id_seq TO postgres;
-- NOTA: El usuario administrador por defecto NO se crea aquí.
-- El usuario admin se crea automáticamente mediante:
-- 1. AdminInitializer.java (al iniciar Spring Boot)
-- 2. Endpoint /api/seguridad/ensure-admin (si se llama manualmente)
-- Credenciales por defecto: admin@inia.com / password123