diff --git a/src/overhaul_job/service.py b/src/overhaul_job/service.py index 1f29456..f15f62c 100644 --- a/src/overhaul_job/service.py +++ b/src/overhaul_job/service.py @@ -10,6 +10,7 @@ from src.database.service import search_filter_sort_paginate from .model import OverhaulJob from .schema import OverhaulJobCreate +from fastapi import HTTPException, status async def get_all(*, common, overhaul_equipment_id: str): """Returns all documents.""" @@ -52,11 +53,44 @@ async def create( return overhaul_job_in.job_ids -async def delete(*, db_session: DbSession, overhaul_job_id): - """Deletes a document.""" - activity = await db_session.get(OverhaulJob, overhaul_job_id) - await db_session.delete(activity) - await db_session.commit() +async def delete( + *, + db_session: DbSession, + overhaul_job_id: str, +) -> bool: + """ + Deletes a scope job and returns success status. + + Args: + db_session: Database session + scope_job_id: ID of the scope job to delete + user_id: ID of user performing the deletion + + Returns: + bool: True if deletion was successful, False otherwise + + Raises: + NotFoundException: If scope job doesn't exist + AuthorizationError: If user lacks delete permission + """ + try: + # Check if job exists + scope_job = await db_session.get(OverhaulJob, overhaul_job_id) + if not scope_job: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="A data with this id does not exist.", + ) + + # Perform deletion + await db_session.delete(scope_job) + await db_session.commit() + + return True + + except Exception as e: + await db_session.rollback() + raise # async def update(*, db_session: DbSession, scope: OverhaulScope, scope_in: ScopeUpdate): # """Updates a document.""" diff --git a/src/scope_equipment/schema.py b/src/scope_equipment/schema.py index bf882c3..e03aa77 100644 --- a/src/scope_equipment/schema.py +++ b/src/scope_equipment/schema.py @@ -34,7 +34,7 @@ class ScopeEquipmentRead(ScopeEquipmentBase): id: UUID assetnum: str assigned_date: datetime - master_equipment: MasterEquipmentBase + master_equipment: Optional[MasterEquipmentBase] =Field(None) class ScopeEquipmentPagination(Pagination): diff --git a/src/scope_equipment_job/model.py b/src/scope_equipment_job/model.py index ea313bd..e12324e 100644 --- a/src/scope_equipment_job/model.py +++ b/src/scope_equipment_job/model.py @@ -13,13 +13,6 @@ class ScopeEquipmentJob(Base, DefaultMixin): assetnum = Column(String, nullable=False) job_id = Column(UUID(as_uuid=True), ForeignKey("oh_ms_job.id", ondelete="cascade")) - master_equipments = relationship( - "MasterEquipment", - lazy="raise", - primaryjoin="and_(ScopeEquipmentJob.assetnum == foreign(MasterEquipment.assetnum))", - uselist=False, - ) - job = relationship("MasterActivity", lazy="selectin") overhaul_jobs = relationship( diff --git a/src/scope_equipment_job/router.py b/src/scope_equipment_job/router.py index fb20d22..d07fb25 100644 --- a/src/scope_equipment_job/router.py +++ b/src/scope_equipment_job/router.py @@ -44,3 +44,8 @@ async def create_scope_equipment_jobs( async def delete_scope_equipment_job(db_session: DbSession, scope_job_id): await delete(db_session=db_session, scope_job_id=scope_job_id) + + return StandardResponse( + data=None, + message="Data deleted successfully", + ) diff --git a/src/scope_equipment_job/service.py b/src/scope_equipment_job/service.py index a6626a2..85214b4 100644 --- a/src/scope_equipment_job/service.py +++ b/src/scope_equipment_job/service.py @@ -16,6 +16,8 @@ from .schema import ScopeEquipmentJobCreate from src.overhaul_job.model import OverhaulJob from src.overhaul_activity.model import OverhaulActivity +from fastapi import HTTPException, status + # async def get(*, db_session: DbSession, scope_equipment_activity_id: str) -> Optional[ScopeEquipmentActivity]: # """Returns a document based on the given document id.""" # result = await db_session.get(ScopeEquipmentActivity, scope_equipment_activity_id) @@ -90,8 +92,41 @@ async def create( # return activity -async def delete(*, db_session: DbSession, scope_job_id): - """Deletes a document.""" - activity = await db_session.get(ScopeEquipmentJob, scope_job_id) - await db_session.delete(activity) - await db_session.commit() +async def delete( + *, + db_session: DbSession, + scope_job_id: int, +) -> bool: + """ + Deletes a scope job and returns success status. + + Args: + db_session: Database session + scope_job_id: ID of the scope job to delete + user_id: ID of user performing the deletion + + Returns: + bool: True if deletion was successful, False otherwise + + Raises: + NotFoundException: If scope job doesn't exist + AuthorizationError: If user lacks delete permission + """ + try: + # Check if job exists + scope_job = await db_session.get(ScopeEquipmentJob, scope_job_id) + if not scope_job: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="A data with this id does not exist.", + ) + + # Perform deletion + await db_session.delete(scope_job) + await db_session.commit() + + return True + + except Exception as e: + await db_session.rollback() + raise