from sqlalchemy import Select, Delete from sqlalchemy.orm import joinedload, selectinload from typing import Optional from .model import MasterActivity from .schema import ActivityMaster, ActivityMasterCreate 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, activity_id: str) -> Optional[ActivityMaster]: """Returns a document based on the given document id.""" result = await db_session.get(MasterActivity, activity_id) return result async def get_all(common: CommonParameters): query = Select(MasterActivity) results = await search_filter_sort_paginate(model=query, **common) return results async def create(*, db_session: DbSession, activty_in: ActivityMasterCreate): activity = MasterActivity( **activty_in.model_dump()) db_session.add(activity) await db_session.commit() return activity async def update(*, db_session: DbSession, activity: MasterActivity, activity_in: ActivityMasterCreate): """Updates a document.""" data = activity_in.model_dump() update_data = 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, activity_id: str): """Deletes a document.""" activity = await db_session.get(MasterActivity, activity_id) await db_session.delete(activity) await db_session.commit()