from typing import Optional from sqlalchemy import Delete, Select, func from sqlalchemy.orm import selectinload from src.auth.service import CurrentUser from src.database.core import DbSession from src.database.service import search_filter_sort_paginate from .model import OverhaulJob from .schema import OverhaulJobCreate async def get_all(*, common, overhaul_equipment_id: str): """Returns all documents.""" 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_equipment_id, overhaul_job_in: OverhaulJobCreate ): overhaul_jobs = [] if not overhaul_equipment_id: raise ValueError("assetnum parameter is required") equipment_stmt = Select(OverhaulJob).where( OverhaulJob.overhaul_activity_id == overhaul_equipment_id ) 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 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 update(*, db_session: DbSession, scope: OverhaulScope, scope_in: ScopeUpdate): # """Updates a document.""" # data = scope_in.model_dump() # update_data = scope_in.model_dump(exclude_defaults=True) # for field in data: # if field in update_data: # setattr(scope, field, update_data[field]) # await db_session.commit() # return scope # async def delete(*, db_session: DbSession, scope_id: str): # """Deletes a document.""" # query = Delete(OverhaulScope).where(OverhaulScope.id == scope_id) # await db_session.execute(query) # await db_session.commit()