from sqlalchemy import Select, Delete from typing import Optional from .model import ScopeEquipmentActivity from .schema import ScopeEquipmentActivityCreate, ScopeEquipmentActivityUpdate from src.database.core import DbSession from src.database.service import CommonParameters, search_filter_sort_paginate from src.auth.service import CurrentUser async def get(*, db_session: DbSession, scope_equipment_activity_id: str) -> Optional[ScopeEquipmentActivity]: """Returns a document based on the given document id.""" result = await db_session.get(ScopeEquipmentActivity, scope_equipment_activity_id) return result async def get_all(common: CommonParameters, assetnum: Optional[str]): query = Select(ScopeEquipmentActivity) if assetnum: query = query.filter(ScopeEquipmentActivity.assetnum == assetnum) results = await search_filter_sort_paginate(model=query, **common) return results async def create(*, db_session: DbSession, scope_equipment_activty_in: ScopeEquipmentActivityCreate): activity = ScopeEquipmentActivity( **scope_equipment_activty_in.model_dump()) db_session.add(activity) await db_session.commit() return activity async def update(*, db_session: DbSession, activity: ScopeEquipmentActivity, scope_equipment_activity_in: ScopeEquipmentActivityUpdate): """Updates a document.""" data = scope_equipment_activity_in.model_dump() update_data = scope_equipment_activity_in.model_dump(exclude_defaults=True) for field in data: if field in update_data: setattr(activity, field, update_data[field]) await db_session.commit() return activity async def delete(*, db_session: DbSession, scope_equipment_activity_id: str): """Deletes a document.""" activity = await db_session.get(ScopeEquipmentActivity, scope_equipment_activity_id) await db_session.delete(activity) await db_session.commit()