add api to add overhail activity

main
Cizz22 11 months ago
parent cb979385cf
commit 2ae301a78b

@ -9,7 +9,7 @@ class OverhaulJob(Base, DefaultMixin):
__tablename__ = "oh_tr_overhaul_job" __tablename__ = "oh_tr_overhaul_job"
overhaul_activity_id = Column(UUID(as_uuid=True), ForeignKey( 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( scope_equipment_job_id = Column(UUID(as_uuid=True), ForeignKey(
"oh_ms_scope_equipment_job.id", ondelete="cascade"), nullable=False) "oh_ms_scope_equipment_job.id", ondelete="cascade"), nullable=False)
@ -22,3 +22,7 @@ class OverhaulJob(Base, DefaultMixin):
scope_equipment_job = relationship( scope_equipment_job = relationship(
"ScopeEquipmentJob", lazy="raise" "ScopeEquipmentJob", lazy="raise"
) )
overhaul_activity = relationship(
"OverhaulActivity", lazy="raise"
)

@ -13,24 +13,34 @@ from src.models import StandardResponse
router = APIRouter() router = APIRouter()
@router.get("/{overhaul_session_id}", response_model=StandardResponse[OverhaulJobPagination]) @router.get("/{overhaul_equipment_id}", response_model=StandardResponse[OverhaulJobPagination])
async def get_jobs(common: CommonParameters, overhaul_session_id: str): async def get_jobs(common: CommonParameters, overhaul_equipment_id: str):
"""Get all scope pagination.""" """Get all scope pagination."""
# return # 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( return StandardResponse(
data=results, data=results,
message="Data retrieved successfully", 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]]) # @router.post("", response_model=StandardResponse[List[str]])
async def create_scope(db_session: DbSession, scope_in: OverhaulJobCreate): # async def create_scope(db_session: DbSession, scope_in: OverhaulJobCreate):
overhaul_job = await create(db_session=db_session, scope_in=scope_in) # 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]) # @router.put("/{scope_id}", response_model=StandardResponse[ScopeRead])

@ -5,7 +5,7 @@ from uuid import UUID
from pydantic import Field from pydantic import Field
from src.models import DefultBase, Pagination from src.models import DefultBase, Pagination
from src.job.schema import ActivityMasterRead from src.scope_equipment_job.schema import ScopeEquipmentJobRead
class OverhaulJobBase(DefultBase): class OverhaulJobBase(DefultBase):
pass pass
@ -18,13 +18,15 @@ class OverhaulJobCreate(OverhaulJobBase):
class OverhaulJobUpdate(OverhaulJobBase): class OverhaulJobUpdate(OverhaulJobBase):
pass pass
class OverhaulActivity(DefultBase):
id: UUID
overhaul_scope_id: UUID
class OverhaulJobRead(OverhaulJobBase): class OverhaulJobRead(OverhaulJobBase):
id: UUID id: UUID
overhaul_session_id: str scope_equipment_job: ScopeEquipmentJobRead
status: str overhaul_activity: OverhaulActivity
notes: str
job: ActivityMasterRead
class OverhaulJobPagination(Pagination): class OverhaulJobPagination(Pagination):

@ -1,6 +1,7 @@
from sqlalchemy import Select, Delete, func from sqlalchemy import Select, Delete, func
from sqlalchemy.orm import selectinload
from src.database.service import search_filter_sort_paginate from src.database.service import search_filter_sort_paginate
from .model import OverhaulJob 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.""" """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) results = await search_filter_sort_paginate(model=query, **common)
return results return results
async def create(*, db_session: DbSession, overhaul_session_id, scope_job_in: OverhaulJobCreate): async def create(*, db_session: DbSession, overhaul_equipment_id, overhaul_job_in: OverhaulJobCreate):
scope_jobs = [] overhaul_jobs = []
if not overhaul_session_id: if not overhaul_equipment_id:
raise ValueError("assetnum parameter is required") raise ValueError("assetnum parameter is required")
for job_id in scope_job_in.job_ids: equipment_stmt = Select(OverhaulJob).where(
scope_equipment_job = OverhaulJob( OverhaulJob.overhaul_activity_id == overhaul_equipment_id)
overhaul_session_id=overhaul_session_id, job_id=job_id)
scope_jobs.append(scope_equipment_job)
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() 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): # 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) # query = Delete(OverhaulScope).where(OverhaulScope.id == scope_id)
# await db_session.execute(query) # await db_session.execute(query)
# await db_session.commit() # await db_session.commit()

@ -18,5 +18,5 @@ class ScopeEquipmentJob(Base, DefaultMixin):
"MasterEquipment", lazy="raise", primaryjoin="and_(ScopeEquipmentJob.assetnum == foreign(MasterEquipment.assetnum))", uselist=False) "MasterEquipment", lazy="raise", primaryjoin="and_(ScopeEquipmentJob.assetnum == foreign(MasterEquipment.assetnum))", uselist=False)
job = relationship( job = relationship(
"MasterActivity", lazy="raise" "MasterActivity", lazy="selectin"
) )

@ -23,7 +23,6 @@ class ScopeEquipmentJobUpdate(ScopeEquipmentJobBase):
class ScopeEquipmentJobRead(ScopeEquipmentJobBase): class ScopeEquipmentJobRead(ScopeEquipmentJobBase):
id: UUID id: UUID
assetnum: str
job: ActivityMasterRead job: ActivityMasterRead

Loading…
Cancel
Save