You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
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()
|