Agrego carpeta del source sql de la Base de Datos

This commit is contained in:
Pablo
2026-08-22 19:10:49 -03:00
parent 11e36bd6c2
commit 88d724fbcf
94 changed files with 7820 additions and 0 deletions
@@ -0,0 +1,50 @@
-- ============================================================================
-- fc_obtener_config
-- ============================================================================
-- PROPÓSITO
-- Devuelve la configuración runtime del sistema, como objeto JSON con
-- todas las parejas clave→valor de internal.app_config.
--
-- Ejemplo de uso: el frontend la consulta al iniciar sesión para
-- conocer parámetros como la ventana de edición de pagos, defaults
-- visuales, etc.
--
-- PARÁMETROS
-- p_token UUID (opcional, default NULL) sesión del actor.
--
-- AUTORIZACIÓN
-- Requiere permiso 'ver_configuraciones_generales'.
--
-- ERRORES (RAISE EXCEPTION)
-- Ninguno propio (sólo los del validador de permiso).
--
-- RETORNA
-- JSONB objeto con todas las pares clave→valor de internal.app_config.
-- Si la tabla está vacía, retorna '{}' (no NULL).
--
-- EFECTOS SECUNDARIOS
-- Ninguno.
-- ============================================================================
CREATE OR REPLACE FUNCTION public.fc_obtener_config(p_token uuid DEFAULT NULL)
RETURNS jsonb
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path TO 'public'
AS $$
DECLARE
v_resultado jsonb;
BEGIN
PERFORM internal.validate_permission(p_token, 'ver_configuraciones_generales');
-- Agrupamos todas las filas en un único objeto JSON
SELECT jsonb_object_agg(clave, valor)
INTO v_resultado
FROM internal.app_config;
-- COALESCE garantiza que si la tabla está vacía, devolvemos un JSON vacío '{}'
-- en lugar de NULL, evitando que el frontend lance excepciones (NullReference).
RETURN COALESCE(v_resultado, '{}'::jsonb);
END;
$$;
@@ -0,0 +1,39 @@
-- ============================================================================
-- internal.get_config_int
-- ============================================================================
-- PROPÓSITO
-- Lee un valor entero de internal.app_config por clave. Si la clave no
-- existe, devuelve el default provisto. Helper para que las funciones
-- públicas tomen parámetros operacionales (ventanas, límites, etc.)
-- desde la tabla de configuración runtime sin tener que hardcodear.
--
-- PARÁMETROS
-- p_clave TEXT nombre de la clave en internal.app_config.
-- p_default INTEGER valor a devolver si la clave no existe.
--
-- AUTORIZACIÓN
-- Función interna sin validación propia.
--
-- ERRORES (RAISE EXCEPTION)
-- Ninguno propio. Si el valor en la tabla no es casteable a int, falla
-- por error de cast de PostgreSQL.
--
-- RETORNA
-- INTEGER con el valor de la clave o p_default si no existe.
--
-- EFECTOS SECUNDARIOS
-- Ninguno (STABLE).
-- ============================================================================
CREATE OR REPLACE FUNCTION internal.get_config_int(p_clave text, p_default integer)
RETURNS integer
LANGUAGE sql
STABLE
SECURITY DEFINER
SET search_path TO 'public'
AS $$
SELECT COALESCE(
(SELECT valor::int FROM internal.app_config WHERE clave = p_clave),
p_default
)
$$;