diff --git a/src/overhaul_job/model.py b/src/overhaul_job/model.py index 9028584..c594aa6 100644 --- a/src/overhaul_job/model.py +++ b/src/overhaul_job/model.py @@ -9,7 +9,7 @@ class OverhaulJob(Base, DefaultMixin): __tablename__ = "oh_tr_overhaul_job" overhaul_activity_id = Column(UUID(as_uuid=True), ForeignKey( - "oh_ms_overhaul_activity.id"), nullable=False) + "oh_tr_overhaul_activity.id"), nullable=False) scope_equipment_job_id = Column(UUID(as_uuid=True), ForeignKey( "oh_ms_scope_equipment_job.id", ondelete="cascade"), nullable=False) @@ -22,3 +22,7 @@ class OverhaulJob(Base, DefaultMixin): scope_equipment_job = relationship( "ScopeEquipmentJob", lazy="raise" ) + + overhaul_activity = relationship( + "OverhaulActivity", lazy="raise" + ) diff --git a/src/overhaul_job/router.py b/src/overhaul_job/router.py index 8ed1811..51c734a 100644 --- a/src/overhaul_job/router.py +++ b/src/overhaul_job/router.py @@ -13,24 +13,34 @@ from src.models import StandardResponse router = APIRouter() -@router.get("/{overhaul_session_id}", response_model=StandardResponse[OverhaulJobPagination]) -async def get_jobs(common: CommonParameters, overhaul_session_id: str): +@router.get("/{overhaul_equipment_id}", response_model=StandardResponse[OverhaulJobPagination]) +async def get_jobs(common: CommonParameters, overhaul_equipment_id: str): """Get all scope pagination.""" # return - results = await get_all(common=common, overhaul_session_id=overhaul_session_id) + results = await get_all(common=common, overhaul_equipment_id=overhaul_equipment_id) return StandardResponse( data=results, message="Data retrieved successfully", ) +@router.post("/{overhaul_equipment_id}", response_model=StandardResponse[None]) +async def create_overhaul_equipment_jobs(db_session: DbSession, overhaul_equipment_id, overhaul_job_in: OverhaulJobCreate): + """Get all scope activity pagination.""" + # return + await create(db_session=db_session, overhaul_equipment_id=overhaul_equipment_id, overhaul_job_in=overhaul_job_in) + + return StandardResponse( + data=None, + message="Data created successfully", + ) -@router.post("", response_model=StandardResponse[List[str]]) -async def create_scope(db_session: DbSession, scope_in: OverhaulJobCreate): - overhaul_job = await create(db_session=db_session, scope_in=scope_in) +# @router.post("", response_model=StandardResponse[List[str]]) +# async def create_scope(db_session: DbSession, scope_in: OverhaulJobCreate): +# overhaul_job = await create(db_session=db_session, scope_in=scope_in) - return StandardResponse(data=overhaul_job, message="Data created successfully") +# return StandardResponse(data=overhaul_job, message="Data created successfully") # @router.put("/{scope_id}", response_model=StandardResponse[ScopeRead]) diff --git a/src/overhaul_job/schema.py b/src/overhaul_job/schema.py index 5a53f9a..3976c7a 100644 --- a/src/overhaul_job/schema.py +++ b/src/overhaul_job/schema.py @@ -5,7 +5,7 @@ from uuid import UUID from pydantic import Field from src.models import DefultBase, Pagination -from src.job.schema import ActivityMasterRead +from src.scope_equipment_job.schema import ScopeEquipmentJobRead class OverhaulJobBase(DefultBase): pass @@ -18,13 +18,15 @@ class OverhaulJobCreate(OverhaulJobBase): class OverhaulJobUpdate(OverhaulJobBase): pass +class OverhaulActivity(DefultBase): + id: UUID + overhaul_scope_id: UUID + class OverhaulJobRead(OverhaulJobBase): id: UUID - overhaul_session_id: str - status: str - notes: str - job: ActivityMasterRead + scope_equipment_job: ScopeEquipmentJobRead + overhaul_activity: OverhaulActivity class OverhaulJobPagination(Pagination): diff --git a/src/overhaul_job/service.py b/src/overhaul_job/service.py index 26e0dd2..be602a4 100644 --- a/src/overhaul_job/service.py +++ b/src/overhaul_job/service.py @@ -1,6 +1,7 @@ from sqlalchemy import Select, Delete, func +from sqlalchemy.orm import selectinload from src.database.service import search_filter_sort_paginate from .model import OverhaulJob @@ -12,29 +13,38 @@ from src.auth.service import CurrentUser -async def get_all(*, common, overhaul_session_id: str): +async def get_all(*, common, overhaul_equipment_id: str): """Returns all documents.""" - query = Select(OverhaulJob).where(OverhaulJob.overhaul_scope_id == overhaul_session_id) + query = Select(OverhaulJob).where(OverhaulJob.overhaul_activity_id == overhaul_equipment_id).options( + selectinload(OverhaulJob.scope_equipment_job), selectinload(OverhaulJob.overhaul_activity) + ) results = await search_filter_sort_paginate(model=query, **common) return results -async def create(*, db_session: DbSession, overhaul_session_id, scope_job_in: OverhaulJobCreate): - scope_jobs = [] +async def create(*, db_session: DbSession, overhaul_equipment_id, overhaul_job_in: OverhaulJobCreate): + overhaul_jobs = [] - if not overhaul_session_id: + if not overhaul_equipment_id: raise ValueError("assetnum parameter is required") - for job_id in scope_job_in.job_ids: - scope_equipment_job = OverhaulJob( - overhaul_session_id=overhaul_session_id, job_id=job_id) - - scope_jobs.append(scope_equipment_job) + equipment_stmt = Select(OverhaulJob).where( + OverhaulJob.overhaul_activity_id == overhaul_equipment_id) - db_session.add_all(scope_jobs) + equipment = await db_session.scalar(equipment_stmt) + + + for job_id in overhaul_job_in.job_ids: + overhaul_equipment_job = OverhaulJob( + overhaul_activity_id=overhaul_equipment_id, scope_equipment_job_id=job_id + ) + + overhaul_jobs.append(overhaul_equipment_job) + + db_session.add_all(overhaul_jobs) await db_session.commit() - return scope_job_in.job_ids + return overhaul_job_in.job_ids # async def update(*, db_session: DbSession, scope: OverhaulScope, scope_in: ScopeUpdate): @@ -57,4 +67,3 @@ async def create(*, db_session: DbSession, overhaul_session_id, scope_job_in: Ov # query = Delete(OverhaulScope).where(OverhaulScope.id == scope_id) # await db_session.execute(query) # await db_session.commit() - diff --git a/src/scope_equipment_job/model.py b/src/scope_equipment_job/model.py index a7fc824..9c38e0c 100644 --- a/src/scope_equipment_job/model.py +++ b/src/scope_equipment_job/model.py @@ -18,5 +18,5 @@ class ScopeEquipmentJob(Base, DefaultMixin): "MasterEquipment", lazy="raise", primaryjoin="and_(ScopeEquipmentJob.assetnum == foreign(MasterEquipment.assetnum))", uselist=False) job = relationship( - "MasterActivity", lazy="raise" + "MasterActivity", lazy="selectin" ) diff --git a/src/scope_equipment_job/schema.py b/src/scope_equipment_job/schema.py index e8097d4..66d7c43 100644 --- a/src/scope_equipment_job/schema.py +++ b/src/scope_equipment_job/schema.py @@ -23,7 +23,6 @@ class ScopeEquipmentJobUpdate(ScopeEquipmentJobBase): class ScopeEquipmentJobRead(ScopeEquipmentJobBase): id: UUID - assetnum: str job: ActivityMasterRead