"""Lets an admin pre-configure what a not-yet-existing account should get the moment someone verifies their email with a matching address - copies of another user's per-user API keys and companies (with their full data: sources, enrichment, reports, snapshots, etc.), an email notification destination for the new account's own address, and optionally an admin promotion. Built for demoing the app to people who don't have accounts yet without hand-entering everything for them after the fact. Applied at email-verification time, not raw registration, since registering an email address doesn't prove you own it - see auth_service.verify_email / provisioning_service.apply_if_pending. """ from __future__ import annotations import uuid from sqlalchemy import Boolean, ForeignKey, String from sqlalchemy.orm import Mapped, mapped_column from app.db.base import Base, TimestampMixin, UUIDPrimaryKeyMixin class PendingProvisioning(Base, UUIDPrimaryKeyMixin, TimestampMixin): __tablename__ = "pending_provisionings" email: Mapped[str] = mapped_column(String(320), unique=True, index=True) source_user_id: Mapped[uuid.UUID] = mapped_column( ForeignKey("users.id", ondelete="CASCADE"), index=True ) make_admin: Mapped[bool] = mapped_column(Boolean, default=False)