Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-02-12 10:35:52 -06:00
parent 0b72a227f1
commit 484db49654
5 changed files with 234 additions and 2181 deletions
@@ -0,0 +1,208 @@
create type "public"."estado_conversacion" as enum ('ACTIVA', 'ARCHIVANDO', 'ARCHIVADA', 'ERROR');
alter table "public"."planes_estudio" drop constraint "planes_estudio_conversation_id_key";
drop view if exists "public"."plantilla_plan";
drop index if exists "public"."planes_estudio_conversation_id_key";
create table "public"."conversaciones_asignatura" (
"id" uuid not null default gen_random_uuid(),
"asignatura_id" uuid not null,
"openai_conversation_id" text not null,
"estado" public.estado_conversacion not null default 'ACTIVA'::public.estado_conversacion,
"conversacion_json" jsonb not null default '{}'::jsonb,
"creado_por" uuid,
"creado_en" timestamp with time zone not null default now(),
"archivado_por" uuid,
"archivado_en" timestamp with time zone,
"intento_archivado" integer not null default 0
);
create table "public"."conversaciones_plan" (
"id" uuid not null default gen_random_uuid(),
"plan_estudio_id" uuid not null,
"openai_conversation_id" text not null,
"estado" public.estado_conversacion not null default 'ACTIVA'::public.estado_conversacion,
"conversacion_json" jsonb not null default '{}'::jsonb,
"creado_por" uuid,
"creado_en" timestamp with time zone not null default now(),
"archivado_por" uuid,
"archivado_en" timestamp with time zone,
"intento_archivado" integer not null default 0
);
alter table "public"."planes_estudio" drop column "conversation_id";
CREATE UNIQUE INDEX conversaciones_asignatura_openai_id_unico ON public.conversaciones_asignatura USING btree (openai_conversation_id);
CREATE UNIQUE INDEX conversaciones_asignatura_pkey ON public.conversaciones_asignatura USING btree (id);
CREATE UNIQUE INDEX conversaciones_plan_openai_id_unico ON public.conversaciones_plan USING btree (openai_conversation_id);
CREATE UNIQUE INDEX conversaciones_plan_pkey ON public.conversaciones_plan USING btree (id);
CREATE INDEX idx_conv_asig_asignatura ON public.conversaciones_asignatura USING btree (asignatura_id);
CREATE INDEX idx_conv_asig_estado ON public.conversaciones_asignatura USING btree (estado);
CREATE INDEX idx_conv_plan_estado ON public.conversaciones_plan USING btree (estado);
CREATE INDEX idx_conv_plan_plan_estudio ON public.conversaciones_plan USING btree (plan_estudio_id);
alter table "public"."conversaciones_asignatura" add constraint "conversaciones_asignatura_pkey" PRIMARY KEY using index "conversaciones_asignatura_pkey";
alter table "public"."conversaciones_plan" add constraint "conversaciones_plan_pkey" PRIMARY KEY using index "conversaciones_plan_pkey";
alter table "public"."conversaciones_asignatura" add constraint "conversaciones_asignatura_archivado_por_fkey" FOREIGN KEY (archivado_por) REFERENCES public.usuarios_app(id) ON DELETE SET NULL not valid;
alter table "public"."conversaciones_asignatura" validate constraint "conversaciones_asignatura_archivado_por_fkey";
alter table "public"."conversaciones_asignatura" add constraint "conversaciones_asignatura_asignatura_id_fkey" FOREIGN KEY (asignatura_id) REFERENCES public.asignaturas(id) ON DELETE CASCADE not valid;
alter table "public"."conversaciones_asignatura" validate constraint "conversaciones_asignatura_asignatura_id_fkey";
alter table "public"."conversaciones_asignatura" add constraint "conversaciones_asignatura_creado_por_fkey" FOREIGN KEY (creado_por) REFERENCES public.usuarios_app(id) ON DELETE SET NULL not valid;
alter table "public"."conversaciones_asignatura" validate constraint "conversaciones_asignatura_creado_por_fkey";
alter table "public"."conversaciones_asignatura" add constraint "conversaciones_asignatura_openai_id_unico" UNIQUE using index "conversaciones_asignatura_openai_id_unico";
alter table "public"."conversaciones_plan" add constraint "conversaciones_plan_archivado_por_fkey" FOREIGN KEY (archivado_por) REFERENCES public.usuarios_app(id) ON DELETE SET NULL not valid;
alter table "public"."conversaciones_plan" validate constraint "conversaciones_plan_archivado_por_fkey";
alter table "public"."conversaciones_plan" add constraint "conversaciones_plan_creado_por_fkey" FOREIGN KEY (creado_por) REFERENCES public.usuarios_app(id) ON DELETE SET NULL not valid;
alter table "public"."conversaciones_plan" validate constraint "conversaciones_plan_creado_por_fkey";
alter table "public"."conversaciones_plan" add constraint "conversaciones_plan_openai_id_unico" UNIQUE using index "conversaciones_plan_openai_id_unico";
alter table "public"."conversaciones_plan" add constraint "conversaciones_plan_plan_estudio_id_fkey" FOREIGN KEY (plan_estudio_id) REFERENCES public.planes_estudio(id) ON DELETE CASCADE not valid;
alter table "public"."conversaciones_plan" validate constraint "conversaciones_plan_plan_estudio_id_fkey";
create or replace view "public"."plantilla_plan" as SELECT plan.id AS plan_estudio_id,
struct.id AS estructura_id,
struct.template_id
FROM (public.planes_estudio plan
JOIN public.estructuras_plan struct ON ((plan.estructura_id = struct.id)));
grant delete on table "public"."conversaciones_asignatura" to "anon";
grant insert on table "public"."conversaciones_asignatura" to "anon";
grant references on table "public"."conversaciones_asignatura" to "anon";
grant select on table "public"."conversaciones_asignatura" to "anon";
grant trigger on table "public"."conversaciones_asignatura" to "anon";
grant truncate on table "public"."conversaciones_asignatura" to "anon";
grant update on table "public"."conversaciones_asignatura" to "anon";
grant delete on table "public"."conversaciones_asignatura" to "authenticated";
grant insert on table "public"."conversaciones_asignatura" to "authenticated";
grant references on table "public"."conversaciones_asignatura" to "authenticated";
grant select on table "public"."conversaciones_asignatura" to "authenticated";
grant trigger on table "public"."conversaciones_asignatura" to "authenticated";
grant truncate on table "public"."conversaciones_asignatura" to "authenticated";
grant update on table "public"."conversaciones_asignatura" to "authenticated";
grant delete on table "public"."conversaciones_asignatura" to "postgres";
grant insert on table "public"."conversaciones_asignatura" to "postgres";
grant references on table "public"."conversaciones_asignatura" to "postgres";
grant select on table "public"."conversaciones_asignatura" to "postgres";
grant trigger on table "public"."conversaciones_asignatura" to "postgres";
grant truncate on table "public"."conversaciones_asignatura" to "postgres";
grant update on table "public"."conversaciones_asignatura" to "postgres";
grant delete on table "public"."conversaciones_asignatura" to "service_role";
grant insert on table "public"."conversaciones_asignatura" to "service_role";
grant references on table "public"."conversaciones_asignatura" to "service_role";
grant select on table "public"."conversaciones_asignatura" to "service_role";
grant trigger on table "public"."conversaciones_asignatura" to "service_role";
grant truncate on table "public"."conversaciones_asignatura" to "service_role";
grant update on table "public"."conversaciones_asignatura" to "service_role";
grant delete on table "public"."conversaciones_plan" to "anon";
grant insert on table "public"."conversaciones_plan" to "anon";
grant references on table "public"."conversaciones_plan" to "anon";
grant select on table "public"."conversaciones_plan" to "anon";
grant trigger on table "public"."conversaciones_plan" to "anon";
grant truncate on table "public"."conversaciones_plan" to "anon";
grant update on table "public"."conversaciones_plan" to "anon";
grant delete on table "public"."conversaciones_plan" to "authenticated";
grant insert on table "public"."conversaciones_plan" to "authenticated";
grant references on table "public"."conversaciones_plan" to "authenticated";
grant select on table "public"."conversaciones_plan" to "authenticated";
grant trigger on table "public"."conversaciones_plan" to "authenticated";
grant truncate on table "public"."conversaciones_plan" to "authenticated";
grant update on table "public"."conversaciones_plan" to "authenticated";
grant delete on table "public"."conversaciones_plan" to "postgres";
grant insert on table "public"."conversaciones_plan" to "postgres";
grant references on table "public"."conversaciones_plan" to "postgres";
grant select on table "public"."conversaciones_plan" to "postgres";
grant trigger on table "public"."conversaciones_plan" to "postgres";
grant truncate on table "public"."conversaciones_plan" to "postgres";
grant update on table "public"."conversaciones_plan" to "postgres";
grant delete on table "public"."conversaciones_plan" to "service_role";
grant insert on table "public"."conversaciones_plan" to "service_role";
grant references on table "public"."conversaciones_plan" to "service_role";
grant select on table "public"."conversaciones_plan" to "service_role";
grant trigger on table "public"."conversaciones_plan" to "service_role";
grant truncate on table "public"."conversaciones_plan" to "service_role";
grant update on table "public"."conversaciones_plan" to "service_role";