from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from .database import get_db from .models import NewsItem from pydantic import BaseModel from datetime import datetime import logging # Configuración del logging LOG_FILE = "app.log" logging.basicConfig( filename=LOG_FILE, # Archivo de logs level=logging.INFO, # Nivel de logging (DEBUG, INFO, WARNING, ERROR, CRITICAL) format="%(asctime)s - %(levelname)s - %(message)s", # Formato de los logs ) router = APIRouter() # Modelo de datos de entrada class NewsItemCreate(BaseModel): titulo: str contenido: str autor: str | None = None fuente: str | None = None fecha: datetime | None = None link: str critico:bool favorable:bool @router.post("/news/") def create_news_item(item: NewsItemCreate, db: Session = Depends(get_db)): # Verificar si el título ya existe existing_item = db.query(NewsItem).filter(NewsItem.titulo == item.titulo).first() if existing_item: logging.info("Título ya en la base de datos") raise HTTPException(status_code=400, detail="El título ya existe en la base de datos") # Crear nuevo objeto new_item = NewsItem( titulo=item.titulo, contenido=item.contenido, autor=item.autor, fuente=item.fuente, fecha=item.fecha or datetime.utcnow(), link=item.link, critico=item.critico, favorable=item.favorable ) db.add(new_item) db.commit() db.refresh(new_item) return {"message": "Noticia creada con éxito", "id": new_item.id, "titulo": new_item.titulo}