Cambios a las 3 bases Model mapper repo para que funcionen a partir de las clases heredando todos los metodos comunes

This commit is contained in:
2025-05-12 01:24:44 +02:00
parent 712bd877b8
commit bf1814bb8e
18 changed files with 992 additions and 361 deletions
@@ -1,27 +1,14 @@
from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel
from typing import List, Optional
from fastapi import Path
from backend.schemas.text_manager_schema import BibliotecaInput, NotaInput
from backend.db.conexion import get_conexion
from backend.services.text_manager import (
crear_biblioteca,
listar_bibliotecas,
agregar_nota_a_biblioteca,
listar_notas_de_biblioteca
)
from backend.services.text_manager_srvc import *
from src.ConexionSql.Postgres_conexion import PostgresConexion
router = APIRouter()
# ---------------------------
# MODELOS PARA BIBLIOTECAS
# ---------------------------
class BibliotecaInput(BaseModel):
nombre_biblioteca: str
descripcion: str
@router.post("/", summary="Crear una nueva biblioteca")
def crear_biblioteca_endpoint(
@@ -50,17 +37,6 @@ def listar_todas_bibliotecas(
except Exception as e:
raise HTTPException(status_code=500, detail="Error interno al listar las bibliotecas")
# ---------------------------
# MODELOS PARA NOTAS
# ---------------------------
class NotaInput(BaseModel):
titulo: str
texto: str = ""
tags: Optional[List[str]] = []
conexiones: Optional[List[str]] = []
resumen: Optional[str] = ""
@router.post("/nota/{biblioteca_id}", summary="Agregar una nota a una biblioteca")
@@ -97,3 +73,33 @@ def listar_notas(
raise HTTPException(status_code=404, detail=str(e))
except Exception as e:
raise HTTPException(status_code=500, detail="Error interno al listar las notas")
@router.delete("/nota/{biblioteca_id}/{nota_id}", summary="Eliminar una nota por ID")
def eliminar_nota_endpoint(
biblioteca_id: str = Path(..., description="ID de la biblioteca"),
nota_id: str = Path(..., description="ID de la nota a eliminar"),
conexion: PostgresConexion = Depends(get_conexion)
):
try:
return eliminar_nota(conexion=conexion, biblioteca_id=biblioteca_id, nota_id=nota_id)
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))
except Exception:
raise HTTPException(status_code=500, detail="Error interno al eliminar la nota")
@router.put("/nota/{biblioteca_id}/{nota_id}", summary="Actualizar una nota por ID")
def actualizar_nota_endpoint(
biblioteca_id: str = Path(..., description="ID de la biblioteca"),
nota_id: str = Path(..., description="ID de la nota a actualizar"),
nota: NotaInput = ..., # body
conexion: PostgresConexion = Depends(get_conexion)
):
try:
return actualizar_nota(conexion=conexion, biblioteca_id=biblioteca_id, nota_id=nota_id, nota_input=nota)
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))
except Exception:
raise HTTPException(status_code=500, detail="Error interno al actualizar la nota")