from typing import Optional from fastapi import HTTPException, status 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 src.scope_equipment_job.model import ScopeEquipmentJob from src.overhaul_activity.model import OverhaulActivity from .model import OverhaulSchedule from .schema import OverhaulScheduleCreate, OverhaulScheduleUpdate async def get_all(*, common): """Returns all documents.""" query = Select(OverhaulSchedule).order_by(OverhaulSchedule.start.desc()) results = await search_filter_sort_paginate(model=query, **common) return results async def create( *, db_session: DbSession, overhaul_job_in: OverhaulScheduleCreate ): schedule = OverhaulSchedule(**overhaul_job_in.model_dump()) db_session.add(schedule) await db_session.commit() return schedule async def update(*, db_session: DbSession, overhaul_schedule_id: str, overhaul_job_in: OverhaulScheduleUpdate): """Updates a document.""" data = overhaul_job_in.model_dump() overhaul_schedule = await db_session.get(OverhaulSchedule, overhaul_schedule_id) update_data = overhaul_job_in.model_dump(exclude_defaults=True) for field in data: if field in update_data: setattr(overhaul_schedule, field, update_data[field]) await db_session.commit() return overhaul_schedule async def delete(*, db_session: DbSession, overhaul_schedule_id: str): """Deletes a document.""" query = Delete(OverhaulSchedule).where(OverhaulSchedule.id == overhaul_schedule_id) await db_session.execute(query) await db_session.commit()