Files
Verificacion_EFOS_Backend/app/modules/feed/service.py

63 lines
2.0 KiB
Python

from sqlalchemy.orm import Session
from datetime import datetime
from typing import Optional
from fastapi import HTTPException
from app.modules.feed.models import Feed
from app.modules.feed.schema import FeedCreate, FeedResponse, FeedUpdate, messageResponse
class FeedService:
@staticmethod
def create_feed(db: Session, data: FeedCreate ):
new_feed = Feed(**data.dict())
db.add(new_feed)
db.commit()
db.refresh(new_feed)
return new_feed
@staticmethod
def get_feed(db: Session, feed_id: int, current_user):
feed = db.query(Feed).filter(Feed.id == feed_id).first()
if not feed:
raise ValueError("feed no encontrado")
return feed
@staticmethod
def update_feed(db: Session, feed_id: int, data: FeedUpdate , current_user):
feed = db.query(Feed).filter(Feed.id == feed_id).first()
if not feed:
raise ValueError("feed no encontrado")
if current_user.role not in ["ROOT", "ADMIN"]:
raise ValueError("No tienes permisos para actualizar este feed")
update_data = data.dict(exclude_unset=True)
for key, value in update_data.items():
setattr(feed, key, value)
db.commit()
db.refresh(feed)
return feed
@staticmethod
def delete_feed(db: Session, feed_id: int, current_user):
feed = db.query(Feed).filter(Feed.id == feed_id).first()
if not feed:
raise ValueError("feed no encontrado")
if current_user.role not in ["ROOT", "ADMIN"]:
raise ValueError("No tienes permisos para eliminar este feed")
try:
feed.is_active = False
feed.deleted_at = datetime.utcnow()
feed.deleted_by = current_user.id
db.commit()
db.refresh(feed)
except Exception as e:
db.rollback()
raise ValueError(f"Error al eliminar el feed: {e}")
return {"message": "feed eliminado correctamente"}