Files

63 lines
2.1 KiB
Python

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