42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
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
|
|
|
|
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
|
|
|
|
@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:
|
|
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
|
|
)
|
|
|
|
db.add(new_item)
|
|
db.commit()
|
|
db.refresh(new_item)
|
|
|
|
return {"message": "Noticia creada con éxito", "id": new_item.id, "titulo": new_item.titulo}
|
|
|