from sqlalchemy.orm import Session from datetime import datetime from typing import Optional from fastapi import HTTPException from app.modules.files.models import Files from app.modules.files.schema import class FilesService: @staticmethod def create_files(db: Session, data: ): new_files = Files(**data.dict()) db.add(new_files) db.commit() db.refresh(new_files) return new_files @staticmethod def get_files(db: Session, files_id: int, current_user): files = db.query(Files).filter(Files.id == files_id).first() if not files: raise ValueError("files no encontrado") return files @staticmethod def update_files(db: Session, files_id: int, data: , current_user): files = db.query(Files).filter(Files.id == files_id).first() if not files: raise ValueError("files no encontrado") if current_user.role not in ["ROOT", "ADMIN"]: raise ValueError("No tienes permisos para actualizar este files") update_data = data.dict(exclude_unset=True) for key, value in update_data.items(): setattr(files, key, value) db.commit() db.refresh(files) return files @staticmethod def delete_files(db: Session, files_id: int, current_user): files = db.query(Files).filter(Files.id == files_id).first() if not files: raise ValueError("files no encontrado") if current_user.role not in ["ROOT", "ADMIN"]: raise ValueError("No tienes permisos para eliminar este files") try: files.is_active = False files.deleted_at = datetime.utcnow() files.deleted_by = current_user.id db.commit() db.refresh(files) except Exception as e: db.rollback() raise ValueError(f"Error al eliminar el files: {e}") return {"message": "files eliminado correctamente"}