1421 lines
34 KiB
PL/PgSQL
1421 lines
34 KiB
PL/PgSQL
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET idle_in_transaction_session_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SELECT pg_catalog.set_config('search_path', '', false);
|
|
SET check_function_bodies = false;
|
|
SET xmloption = content;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "pgsodium";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COMMENT ON SCHEMA "public" IS 'standard public schema';
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "pg_graphql" WITH SCHEMA "graphql";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "pg_stat_statements" WITH SCHEMA "extensions";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "pgcrypto" WITH SCHEMA "extensions";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "pgjwt" WITH SCHEMA "extensions";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "supabase_vault" WITH SCHEMA "vault";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "unaccent" WITH SCHEMA "public";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA "extensions";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TYPE "public"."estado_tarea_revision" AS ENUM (
|
|
'PENDIENTE',
|
|
'COMPLETADA',
|
|
'OMITIDA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."estado_tarea_revision" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."fuente_cambio" AS ENUM (
|
|
'HUMANO',
|
|
'IA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."fuente_cambio" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."nivel_plan_estudio" AS ENUM (
|
|
'Licenciatura',
|
|
'Maestría',
|
|
'Doctorado',
|
|
'Especialidad',
|
|
'Diplomado',
|
|
'Otro'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."nivel_plan_estudio" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."puesto_tipo" AS ENUM (
|
|
'vicerrector',
|
|
'director_facultad',
|
|
'secretario_academico',
|
|
'jefe_carrera',
|
|
'profesor',
|
|
'lci'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."puesto_tipo" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."rol_responsable_asignatura" AS ENUM (
|
|
'PROFESOR_RESPONSABLE',
|
|
'COAUTOR',
|
|
'REVISOR'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."rol_responsable_asignatura" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_asignatura" AS ENUM (
|
|
'OBLIGATORIA',
|
|
'OPTATIVA',
|
|
'TRONCAL',
|
|
'OTRA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_asignatura" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_bibliografia" AS ENUM (
|
|
'BASICA',
|
|
'COMPLEMENTARIA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_bibliografia" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_cambio" AS ENUM (
|
|
'ACTUALIZACION_CAMPO',
|
|
'ACTUALIZACION_MAPA',
|
|
'TRANSICION_ESTADO',
|
|
'OTRO'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_cambio" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_ciclo" AS ENUM (
|
|
'Semestre',
|
|
'Cuatrimestre',
|
|
'Trimestre',
|
|
'Otro'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_ciclo" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_estructura_plan" AS ENUM (
|
|
'CURRICULAR',
|
|
'NO_CURRICULAR'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_estructura_plan" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_fuente_bibliografia" AS ENUM (
|
|
'MANUAL',
|
|
'BIBLIOTECA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_fuente_bibliografia" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_interaccion_ia" AS ENUM (
|
|
'GENERAR',
|
|
'MEJORAR_SECCION',
|
|
'CHAT',
|
|
'OTRA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_interaccion_ia" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_notificacion" AS ENUM (
|
|
'PLAN_ASIGNADO',
|
|
'ESTADO_CAMBIADO',
|
|
'TAREA_ASIGNADA',
|
|
'COMENTARIO',
|
|
'OTRA'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_notificacion" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TYPE "public"."tipo_origen" AS ENUM (
|
|
'MANUAL',
|
|
'IA',
|
|
'CLONADO_INTERNO',
|
|
'CLONADO_TRADICIONAL',
|
|
'OTRO'
|
|
);
|
|
|
|
|
|
ALTER TYPE "public"."tipo_origen" OWNER TO "postgres";
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION "public"."set_actualizado_en"() RETURNS "trigger"
|
|
LANGUAGE "plpgsql"
|
|
AS $$
|
|
begin
|
|
new.actualizado_en = now();
|
|
return new;
|
|
end;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION "public"."set_actualizado_en"() OWNER TO "postgres";
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION "public"."unaccent_immutable"("text") RETURNS "text"
|
|
LANGUAGE "sql" IMMUTABLE STRICT PARALLEL SAFE
|
|
AS $_$
|
|
SELECT public.unaccent('public.unaccent', $1);
|
|
$_$;
|
|
|
|
|
|
ALTER FUNCTION "public"."unaccent_immutable"("text") OWNER TO "postgres";
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION "public"."validar_numero_ciclo_asignatura"() RETURNS "trigger"
|
|
LANGUAGE "plpgsql"
|
|
AS $$
|
|
declare
|
|
v_numero_ciclos int;
|
|
begin
|
|
if new.numero_ciclo is null then
|
|
return new;
|
|
end if;
|
|
|
|
select pe.numero_ciclos into v_numero_ciclos
|
|
from planes_estudio pe
|
|
where pe.id = new.plan_estudio_id;
|
|
|
|
if v_numero_ciclos is null then
|
|
raise exception 'plan_estudio_id inválido %, plan no encontrado', new.plan_estudio_id;
|
|
end if;
|
|
|
|
if new.numero_ciclo < 1 then
|
|
raise exception 'numero_ciclo debe ser >= 1 (recibido %)', new.numero_ciclo;
|
|
end if;
|
|
|
|
if new.numero_ciclo > v_numero_ciclos then
|
|
raise exception 'numero_ciclo % excede planes_estudio.numero_ciclos % para plan_estudio_id %',
|
|
new.numero_ciclo, v_numero_ciclos, new.plan_estudio_id;
|
|
end if;
|
|
|
|
return new;
|
|
end;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION "public"."validar_numero_ciclo_asignatura"() OWNER TO "postgres";
|
|
|
|
SET default_tablespace = '';
|
|
|
|
SET default_table_access_method = "heap";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."archivos" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"ruta_storage" "text" NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"mime_type" "text",
|
|
"bytes" integer,
|
|
"subido_por" "uuid",
|
|
"subido_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"temporal" boolean DEFAULT false NOT NULL,
|
|
"openai_file_id" "text",
|
|
"notas" "text"
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."archivos" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."asignaturas" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"plan_estudio_id" "uuid" NOT NULL,
|
|
"estructura_id" "uuid",
|
|
"facultad_propietaria_id" "uuid",
|
|
"codigo" "text",
|
|
"nombre" "text" NOT NULL,
|
|
"tipo" "public"."tipo_asignatura" DEFAULT 'OBLIGATORIA'::"public"."tipo_asignatura" NOT NULL,
|
|
"creditos" numeric NOT NULL,
|
|
"horas_semana" integer,
|
|
"numero_ciclo" integer,
|
|
"linea_plan_id" "uuid",
|
|
"orden_celda" integer,
|
|
"datos" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"contenido_tematico" "jsonb" DEFAULT '[]'::"jsonb" NOT NULL,
|
|
"tipo_origen" "public"."tipo_origen",
|
|
"meta_origen" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"creado_por" "uuid",
|
|
"actualizado_por" "uuid",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
CONSTRAINT "asignaturas_ciclo_chk" CHECK ((("numero_ciclo" IS NULL) OR ("numero_ciclo" > 0))),
|
|
CONSTRAINT "asignaturas_creditos_check" CHECK (("creditos" >= (0)::numeric)),
|
|
CONSTRAINT "asignaturas_horas_semana_check" CHECK ((("horas_semana" IS NULL) OR ("horas_semana" >= 0))),
|
|
CONSTRAINT "asignaturas_orden_celda_chk" CHECK ((("orden_celda" IS NULL) OR ("orden_celda" >= 0)))
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."asignaturas" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."bibliografia_asignatura" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"asignatura_id" "uuid" NOT NULL,
|
|
"tipo" "public"."tipo_bibliografia" NOT NULL,
|
|
"cita" "text" NOT NULL,
|
|
"tipo_fuente" "public"."tipo_fuente_bibliografia" DEFAULT 'MANUAL'::"public"."tipo_fuente_bibliografia" NOT NULL,
|
|
"biblioteca_item_id" "text",
|
|
"creado_por" "uuid",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."bibliografia_asignatura" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."cambios_asignatura" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"asignatura_id" "uuid" NOT NULL,
|
|
"cambiado_por" "uuid",
|
|
"cambiado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"tipo" "public"."tipo_cambio" NOT NULL,
|
|
"campo" "text",
|
|
"valor_anterior" "jsonb",
|
|
"valor_nuevo" "jsonb",
|
|
"fuente" "public"."fuente_cambio",
|
|
"interaccion_ia_id" "uuid"
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."cambios_asignatura" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."cambios_plan" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"plan_estudio_id" "uuid" NOT NULL,
|
|
"cambiado_por" "uuid",
|
|
"cambiado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"tipo" "public"."tipo_cambio" NOT NULL,
|
|
"campo" "text",
|
|
"valor_anterior" "jsonb",
|
|
"valor_nuevo" "jsonb",
|
|
"interaccion_ia_id" "uuid"
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."cambios_plan" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."carreras" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"facultad_id" "uuid" NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"nombre_corto" "text",
|
|
"clave_sep" "text",
|
|
"activa" boolean DEFAULT true NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."carreras" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."estados_plan" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"clave" "text" NOT NULL,
|
|
"etiqueta" "text" NOT NULL,
|
|
"orden" integer DEFAULT 0 NOT NULL,
|
|
"es_final" boolean DEFAULT false NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."estados_plan" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."estructuras_asignatura" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"version" "text",
|
|
"definicion" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."estructuras_asignatura" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."estructuras_plan" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"tipo" "public"."tipo_estructura_plan" NOT NULL,
|
|
"template_id" "text",
|
|
"definicion" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."estructuras_plan" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."facultades" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"nombre_corto" "text",
|
|
"color" "text",
|
|
"icono" "text",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."facultades" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."interacciones_ia" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"usuario_id" "uuid",
|
|
"plan_estudio_id" "uuid",
|
|
"asignatura_id" "uuid",
|
|
"tipo" "public"."tipo_interaccion_ia" NOT NULL,
|
|
"modelo" "text",
|
|
"temperatura" numeric,
|
|
"prompt" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"respuesta" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"aceptada" boolean DEFAULT false NOT NULL,
|
|
"conversacion_id" "text",
|
|
"ids_archivos" "jsonb" DEFAULT '[]'::"jsonb" NOT NULL,
|
|
"ids_vector_store" "jsonb" DEFAULT '[]'::"jsonb" NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"rutas_storage" "jsonb" DEFAULT '[]'::"jsonb" NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."interacciones_ia" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."lineas_plan" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"plan_estudio_id" "uuid" NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"orden" integer DEFAULT 0 NOT NULL,
|
|
"area" "text",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."lineas_plan" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."notificaciones" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"usuario_id" "uuid" NOT NULL,
|
|
"tipo" "public"."tipo_notificacion" NOT NULL,
|
|
"payload" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"leida" boolean DEFAULT false NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"leida_en" timestamp with time zone
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."notificaciones" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."planes_estudio" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"carrera_id" "uuid" NOT NULL,
|
|
"estructura_id" "uuid" NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"nivel" "public"."nivel_plan_estudio" NOT NULL,
|
|
"tipo_ciclo" "public"."tipo_ciclo" NOT NULL,
|
|
"numero_ciclos" integer NOT NULL,
|
|
"datos" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"estado_actual_id" "uuid",
|
|
"activo" boolean DEFAULT true NOT NULL,
|
|
"tipo_origen" "public"."tipo_origen",
|
|
"meta_origen" "jsonb" DEFAULT '{}'::"jsonb" NOT NULL,
|
|
"creado_por" "uuid",
|
|
"actualizado_por" "uuid",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"nombre_search" "text" GENERATED ALWAYS AS ("lower"("public"."unaccent_immutable"("nombre"))) STORED,
|
|
CONSTRAINT "planes_estudio_numero_ciclos_check" CHECK (("numero_ciclos" > 0))
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."planes_estudio" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."responsables_asignatura" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"asignatura_id" "uuid" NOT NULL,
|
|
"usuario_id" "uuid" NOT NULL,
|
|
"rol" "public"."rol_responsable_asignatura" DEFAULT 'PROFESOR_RESPONSABLE'::"public"."rol_responsable_asignatura" NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."responsables_asignatura" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."roles" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"clave" "text" NOT NULL,
|
|
"nombre" "text" NOT NULL,
|
|
"descripcion" "text"
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."roles" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."tareas_revision" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"plan_estudio_id" "uuid" NOT NULL,
|
|
"asignado_a" "uuid" NOT NULL,
|
|
"rol_id" "uuid",
|
|
"estado_id" "uuid",
|
|
"estatus" "public"."estado_tarea_revision" DEFAULT 'PENDIENTE'::"public"."estado_tarea_revision" NOT NULL,
|
|
"fecha_limite" "date",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"completado_en" timestamp with time zone
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."tareas_revision" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."transiciones_estado_plan" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"desde_estado_id" "uuid" NOT NULL,
|
|
"hacia_estado_id" "uuid" NOT NULL,
|
|
"rol_permitido_id" "uuid" NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
CONSTRAINT "transiciones_no_auto_chk" CHECK (("desde_estado_id" <> "hacia_estado_id"))
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."transiciones_estado_plan" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."usuarios_app" (
|
|
"id" "uuid" NOT NULL,
|
|
"nombre_completo" "text",
|
|
"email" "text",
|
|
"externo" boolean DEFAULT false NOT NULL,
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
"actualizado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."usuarios_app" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."usuarios_roles" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"usuario_id" "uuid" NOT NULL,
|
|
"rol_id" "uuid" NOT NULL,
|
|
"facultad_id" "uuid",
|
|
"carrera_id" "uuid",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL,
|
|
CONSTRAINT "usuarios_roles_alcance_chk" CHECK ((("facultad_id" IS NOT NULL) OR ("carrera_id" IS NOT NULL)))
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."usuarios_roles" OWNER TO "postgres";
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."vector_stores" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"openai_vector_id" "text",
|
|
"nombre" "text" NOT NULL,
|
|
"creado_por" "uuid",
|
|
"creado_en" timestamp with time zone DEFAULT "now"() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE "public"."vector_stores" OWNER TO "postgres";
|
|
|
|
|
|
ALTER TABLE ONLY "public"."archivos"
|
|
ADD CONSTRAINT "archivos_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."bibliografia_asignatura"
|
|
ADD CONSTRAINT "bibliografia_asignatura_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."cambios_asignatura"
|
|
ADD CONSTRAINT "cambios_asignatura_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."cambios_plan"
|
|
ADD CONSTRAINT "cambios_plan_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."carreras"
|
|
ADD CONSTRAINT "carreras_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."estados_plan"
|
|
ADD CONSTRAINT "estados_plan_clave_key" UNIQUE ("clave");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."estados_plan"
|
|
ADD CONSTRAINT "estados_plan_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."estructuras_asignatura"
|
|
ADD CONSTRAINT "estructuras_asignatura_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."estructuras_plan"
|
|
ADD CONSTRAINT "estructuras_plan_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."facultades"
|
|
ADD CONSTRAINT "facultades_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."interacciones_ia"
|
|
ADD CONSTRAINT "interacciones_ia_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."lineas_plan"
|
|
ADD CONSTRAINT "lineas_plan_id_plan_unico" UNIQUE ("id", "plan_estudio_id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."lineas_plan"
|
|
ADD CONSTRAINT "lineas_plan_nombre_unico" UNIQUE ("plan_estudio_id", "nombre");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."lineas_plan"
|
|
ADD CONSTRAINT "lineas_plan_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."notificaciones"
|
|
ADD CONSTRAINT "notificaciones_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."planes_estudio"
|
|
ADD CONSTRAINT "planes_estudio_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."responsables_asignatura"
|
|
ADD CONSTRAINT "responsables_asignatura_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."responsables_asignatura"
|
|
ADD CONSTRAINT "responsables_asignatura_unico" UNIQUE ("asignatura_id", "usuario_id", "rol");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."roles"
|
|
ADD CONSTRAINT "roles_clave_key" UNIQUE ("clave");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."roles"
|
|
ADD CONSTRAINT "roles_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."tareas_revision"
|
|
ADD CONSTRAINT "tareas_revision_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."transiciones_estado_plan"
|
|
ADD CONSTRAINT "transiciones_estado_plan_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."transiciones_estado_plan"
|
|
ADD CONSTRAINT "transiciones_unica" UNIQUE ("desde_estado_id", "hacia_estado_id", "rol_permitido_id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_app"
|
|
ADD CONSTRAINT "usuarios_app_email_unico" UNIQUE ("email");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_app"
|
|
ADD CONSTRAINT "usuarios_app_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_roles"
|
|
ADD CONSTRAINT "usuarios_roles_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."vector_stores"
|
|
ADD CONSTRAINT "vector_stores_pkey" PRIMARY KEY ("id");
|
|
|
|
|
|
|
|
CREATE UNIQUE INDEX "asignaturas_orden_celda_unico" ON "public"."asignaturas" USING "btree" ("plan_estudio_id", "linea_plan_id", "numero_ciclo", "orden_celda") WHERE (("linea_plan_id" IS NOT NULL) AND ("numero_ciclo" IS NOT NULL) AND ("orden_celda" IS NOT NULL));
|
|
|
|
|
|
|
|
CREATE INDEX "asignaturas_plan_idx" ON "public"."asignaturas" USING "btree" ("plan_estudio_id");
|
|
|
|
|
|
|
|
CREATE INDEX "asignaturas_plan_linea_ciclo_idx" ON "public"."asignaturas" USING "btree" ("plan_estudio_id", "linea_plan_id", "numero_ciclo");
|
|
|
|
|
|
|
|
CREATE INDEX "bibliografia_asignatura_idx" ON "public"."bibliografia_asignatura" USING "btree" ("asignatura_id");
|
|
|
|
|
|
|
|
CREATE INDEX "idx_planes_nombre_search" ON "public"."planes_estudio" USING "btree" ("nombre_search");
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_asignaturas_actualizado_en" BEFORE UPDATE ON "public"."asignaturas" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_bibliografia_asignatura_actualizado_en" BEFORE UPDATE ON "public"."bibliografia_asignatura" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_carreras_actualizado_en" BEFORE UPDATE ON "public"."carreras" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_estructuras_asignatura_actualizado_en" BEFORE UPDATE ON "public"."estructuras_asignatura" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_estructuras_plan_actualizado_en" BEFORE UPDATE ON "public"."estructuras_plan" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_facultades_actualizado_en" BEFORE UPDATE ON "public"."facultades" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_lineas_plan_actualizado_en" BEFORE UPDATE ON "public"."lineas_plan" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_planes_estudio_actualizado_en" BEFORE UPDATE ON "public"."planes_estudio" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_usuarios_app_actualizado_en" BEFORE UPDATE ON "public"."usuarios_app" FOR EACH ROW EXECUTE FUNCTION "public"."set_actualizado_en"();
|
|
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER "trg_validar_numero_ciclo_asignatura" BEFORE INSERT OR UPDATE OF "numero_ciclo", "plan_estudio_id" ON "public"."asignaturas" FOR EACH ROW EXECUTE FUNCTION "public"."validar_numero_ciclo_asignatura"();
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."archivos"
|
|
ADD CONSTRAINT "archivos_subido_por_fkey" FOREIGN KEY ("subido_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_actualizado_por_fkey" FOREIGN KEY ("actualizado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_creado_por_fkey" FOREIGN KEY ("creado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_estructura_id_fkey" FOREIGN KEY ("estructura_id") REFERENCES "public"."estructuras_asignatura"("id") ON DELETE RESTRICT;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_facultad_propietaria_id_fkey" FOREIGN KEY ("facultad_propietaria_id") REFERENCES "public"."facultades"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_linea_plan_fk_compuesta" FOREIGN KEY ("linea_plan_id", "plan_estudio_id") REFERENCES "public"."lineas_plan"("id", "plan_estudio_id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."asignaturas"
|
|
ADD CONSTRAINT "asignaturas_plan_estudio_id_fkey" FOREIGN KEY ("plan_estudio_id") REFERENCES "public"."planes_estudio"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."bibliografia_asignatura"
|
|
ADD CONSTRAINT "bibliografia_asignatura_asignatura_id_fkey" FOREIGN KEY ("asignatura_id") REFERENCES "public"."asignaturas"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."bibliografia_asignatura"
|
|
ADD CONSTRAINT "bibliografia_asignatura_creado_por_fkey" FOREIGN KEY ("creado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."cambios_asignatura"
|
|
ADD CONSTRAINT "cambios_asignatura_asignatura_id_fkey" FOREIGN KEY ("asignatura_id") REFERENCES "public"."asignaturas"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."cambios_asignatura"
|
|
ADD CONSTRAINT "cambios_asignatura_cambiado_por_fkey" FOREIGN KEY ("cambiado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."cambios_plan"
|
|
ADD CONSTRAINT "cambios_plan_cambiado_por_fkey" FOREIGN KEY ("cambiado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."cambios_plan"
|
|
ADD CONSTRAINT "cambios_plan_plan_estudio_id_fkey" FOREIGN KEY ("plan_estudio_id") REFERENCES "public"."planes_estudio"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."carreras"
|
|
ADD CONSTRAINT "carreras_facultad_id_fkey" FOREIGN KEY ("facultad_id") REFERENCES "public"."facultades"("id") ON DELETE RESTRICT;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."interacciones_ia"
|
|
ADD CONSTRAINT "interacciones_ia_asignatura_id_fkey" FOREIGN KEY ("asignatura_id") REFERENCES "public"."asignaturas"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."interacciones_ia"
|
|
ADD CONSTRAINT "interacciones_ia_plan_estudio_id_fkey" FOREIGN KEY ("plan_estudio_id") REFERENCES "public"."planes_estudio"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."interacciones_ia"
|
|
ADD CONSTRAINT "interacciones_ia_usuario_id_fkey" FOREIGN KEY ("usuario_id") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."lineas_plan"
|
|
ADD CONSTRAINT "lineas_plan_plan_estudio_id_fkey" FOREIGN KEY ("plan_estudio_id") REFERENCES "public"."planes_estudio"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."notificaciones"
|
|
ADD CONSTRAINT "notificaciones_usuario_id_fkey" FOREIGN KEY ("usuario_id") REFERENCES "public"."usuarios_app"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."planes_estudio"
|
|
ADD CONSTRAINT "planes_estudio_actualizado_por_fkey" FOREIGN KEY ("actualizado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."planes_estudio"
|
|
ADD CONSTRAINT "planes_estudio_carrera_id_fkey" FOREIGN KEY ("carrera_id") REFERENCES "public"."carreras"("id") ON DELETE RESTRICT;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."planes_estudio"
|
|
ADD CONSTRAINT "planes_estudio_creado_por_fkey" FOREIGN KEY ("creado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."planes_estudio"
|
|
ADD CONSTRAINT "planes_estudio_estado_actual_id_fkey" FOREIGN KEY ("estado_actual_id") REFERENCES "public"."estados_plan"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."planes_estudio"
|
|
ADD CONSTRAINT "planes_estudio_estructura_id_fkey" FOREIGN KEY ("estructura_id") REFERENCES "public"."estructuras_plan"("id") ON DELETE RESTRICT;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."responsables_asignatura"
|
|
ADD CONSTRAINT "responsables_asignatura_asignatura_id_fkey" FOREIGN KEY ("asignatura_id") REFERENCES "public"."asignaturas"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."responsables_asignatura"
|
|
ADD CONSTRAINT "responsables_asignatura_usuario_id_fkey" FOREIGN KEY ("usuario_id") REFERENCES "public"."usuarios_app"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."tareas_revision"
|
|
ADD CONSTRAINT "tareas_revision_asignado_a_fkey" FOREIGN KEY ("asignado_a") REFERENCES "public"."usuarios_app"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."tareas_revision"
|
|
ADD CONSTRAINT "tareas_revision_estado_id_fkey" FOREIGN KEY ("estado_id") REFERENCES "public"."estados_plan"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."tareas_revision"
|
|
ADD CONSTRAINT "tareas_revision_plan_estudio_id_fkey" FOREIGN KEY ("plan_estudio_id") REFERENCES "public"."planes_estudio"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."tareas_revision"
|
|
ADD CONSTRAINT "tareas_revision_rol_id_fkey" FOREIGN KEY ("rol_id") REFERENCES "public"."roles"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."transiciones_estado_plan"
|
|
ADD CONSTRAINT "transiciones_estado_plan_desde_estado_id_fkey" FOREIGN KEY ("desde_estado_id") REFERENCES "public"."estados_plan"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."transiciones_estado_plan"
|
|
ADD CONSTRAINT "transiciones_estado_plan_hacia_estado_id_fkey" FOREIGN KEY ("hacia_estado_id") REFERENCES "public"."estados_plan"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."transiciones_estado_plan"
|
|
ADD CONSTRAINT "transiciones_estado_plan_rol_permitido_id_fkey" FOREIGN KEY ("rol_permitido_id") REFERENCES "public"."roles"("id") ON DELETE RESTRICT;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_roles"
|
|
ADD CONSTRAINT "usuarios_roles_carrera_id_fkey" FOREIGN KEY ("carrera_id") REFERENCES "public"."carreras"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_roles"
|
|
ADD CONSTRAINT "usuarios_roles_facultad_id_fkey" FOREIGN KEY ("facultad_id") REFERENCES "public"."facultades"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_roles"
|
|
ADD CONSTRAINT "usuarios_roles_rol_id_fkey" FOREIGN KEY ("rol_id") REFERENCES "public"."roles"("id") ON DELETE RESTRICT;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."usuarios_roles"
|
|
ADD CONSTRAINT "usuarios_roles_usuario_id_fkey" FOREIGN KEY ("usuario_id") REFERENCES "public"."usuarios_app"("id") ON DELETE CASCADE;
|
|
|
|
|
|
|
|
ALTER TABLE ONLY "public"."vector_stores"
|
|
ADD CONSTRAINT "vector_stores_creado_por_fkey" FOREIGN KEY ("creado_por") REFERENCES "public"."usuarios_app"("id") ON DELETE SET NULL;
|
|
|
|
|
|
|
|
|
|
|
|
ALTER PUBLICATION "supabase_realtime" OWNER TO "postgres";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRANT USAGE ON SCHEMA "public" TO "postgres";
|
|
GRANT USAGE ON SCHEMA "public" TO "anon";
|
|
GRANT USAGE ON SCHEMA "public" TO "authenticated";
|
|
GRANT USAGE ON SCHEMA "public" TO "service_role";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRANT ALL ON FUNCTION "public"."set_actualizado_en"() TO "anon";
|
|
GRANT ALL ON FUNCTION "public"."set_actualizado_en"() TO "authenticated";
|
|
GRANT ALL ON FUNCTION "public"."set_actualizado_en"() TO "service_role";
|
|
|
|
GRANT ALL ON FUNCTION "public"."validar_numero_ciclo_asignatura"() TO "anon";
|
|
GRANT ALL ON FUNCTION "public"."validar_numero_ciclo_asignatura"() TO "authenticated";
|
|
GRANT ALL ON FUNCTION "public"."validar_numero_ciclo_asignatura"() TO "service_role";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."archivos" TO "anon";
|
|
GRANT ALL ON TABLE "public"."archivos" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."archivos" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."asignaturas" TO "anon";
|
|
GRANT ALL ON TABLE "public"."asignaturas" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."asignaturas" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."bibliografia_asignatura" TO "anon";
|
|
GRANT ALL ON TABLE "public"."bibliografia_asignatura" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."bibliografia_asignatura" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."cambios_asignatura" TO "anon";
|
|
GRANT ALL ON TABLE "public"."cambios_asignatura" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."cambios_asignatura" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."cambios_plan" TO "anon";
|
|
GRANT ALL ON TABLE "public"."cambios_plan" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."cambios_plan" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."carreras" TO "anon";
|
|
GRANT ALL ON TABLE "public"."carreras" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."carreras" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."estados_plan" TO "anon";
|
|
GRANT ALL ON TABLE "public"."estados_plan" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."estados_plan" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."estructuras_asignatura" TO "anon";
|
|
GRANT ALL ON TABLE "public"."estructuras_asignatura" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."estructuras_asignatura" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."estructuras_plan" TO "anon";
|
|
GRANT ALL ON TABLE "public"."estructuras_plan" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."estructuras_plan" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."facultades" TO "anon";
|
|
GRANT ALL ON TABLE "public"."facultades" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."facultades" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."interacciones_ia" TO "anon";
|
|
GRANT ALL ON TABLE "public"."interacciones_ia" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."interacciones_ia" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."lineas_plan" TO "anon";
|
|
GRANT ALL ON TABLE "public"."lineas_plan" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."lineas_plan" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."notificaciones" TO "anon";
|
|
GRANT ALL ON TABLE "public"."notificaciones" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."notificaciones" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."planes_estudio" TO "anon";
|
|
GRANT ALL ON TABLE "public"."planes_estudio" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."planes_estudio" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."responsables_asignatura" TO "anon";
|
|
GRANT ALL ON TABLE "public"."responsables_asignatura" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."responsables_asignatura" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."roles" TO "anon";
|
|
GRANT ALL ON TABLE "public"."roles" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."roles" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."tareas_revision" TO "anon";
|
|
GRANT ALL ON TABLE "public"."tareas_revision" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."tareas_revision" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."transiciones_estado_plan" TO "anon";
|
|
GRANT ALL ON TABLE "public"."transiciones_estado_plan" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."transiciones_estado_plan" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."usuarios_app" TO "anon";
|
|
GRANT ALL ON TABLE "public"."usuarios_app" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."usuarios_app" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."usuarios_roles" TO "anon";
|
|
GRANT ALL ON TABLE "public"."usuarios_roles" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."usuarios_roles" TO "service_role";
|
|
|
|
|
|
|
|
GRANT ALL ON TABLE "public"."vector_stores" TO "anon";
|
|
GRANT ALL ON TABLE "public"."vector_stores" TO "authenticated";
|
|
GRANT ALL ON TABLE "public"."vector_stores" TO "service_role";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "postgres";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "anon";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "authenticated";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "service_role";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "postgres";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "anon";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "authenticated";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "service_role";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "postgres";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "anon";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "authenticated";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "service_role";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|