from __future__ import annotations import uuid from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.pending_provisioning import PendingProvisioning class PendingProvisioningRepository: def __init__(self, db: AsyncSession) -> None: self.db = db async def list_all(self) -> list[PendingProvisioning]: result = await self.db.execute(select(PendingProvisioning)) return list(result.scalars().all()) async def get_by_email(self, email: str) -> PendingProvisioning | None: result = await self.db.execute( select(PendingProvisioning).where(PendingProvisioning.email == email.lower()) ) return result.scalar_one_or_none() async def create( self, email: str, source_user_id: uuid.UUID, make_admin: bool ) -> PendingProvisioning: record = PendingProvisioning( email=email.lower(), source_user_id=source_user_id, make_admin=make_admin ) self.db.add(record) await self.db.flush() return record async def delete(self, record: PendingProvisioning) -> None: await self.db.delete(record) await self.db.flush()