from sqlalchemy import Select, Delete from .model import Equipment from .schema import EquipmentCreate, EquipmentUpdate from typing import Optional from src.database.core import DbSession from src.auth.service import CurrentUser async def get(*, db_session: DbSession, equipment_id: str) -> Optional[Equipment]: """Returns a document based on the given document id.""" query = Select(Equipment).filter(Equipment.id == equipment_id) result = await db_session.execute(query) return result.scalars().one_or_none() async def get_all(*, db_session: DbSession): """Returns all documents.""" query = Select(Equipment) result = await db_session.execute(query) return result.scalars().all() async def create(*, db_session: DbSession, equipment_in: EquipmentCreate): """Creates a new document.""" equipment = Equipment(**equipment_in.model_dump()) db_session.add(equipment) await db_session.commit() return equipment async def update(*, db_session: DbSession, equipment: Equipment, equipment_in: EquipmentUpdate): """Updates a document.""" data = equipment_in.model_dump() update_data = equipment_in.model_dump(exclude_defaults=True) for field in data: if field in update_data: setattr(equipment, field, update_data[field]) await db_session.commit() return equipment async def delete(*, db_session: DbSession, equipment_id: str): """Deletes a document.""" query = Delete(Equipment).where(Equipment.id == equipment_id) await db_session.execute(query) await db_session.commit()