from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field SUPABASE_PASSWORD_MIN_LENGTH = 6 SUPABASE_EMAIL_PATTERN = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" class OtpSendRequest(BaseModel): model_config = ConfigDict(extra="forbid") email: str = Field(pattern=SUPABASE_EMAIL_PATTERN) class EmailSessionCreateRequest(BaseModel): model_config = ConfigDict(extra="forbid") email: str = Field(pattern=SUPABASE_EMAIL_PATTERN) token: str = Field(min_length=6, max_length=6) class SessionRefreshRequest(BaseModel): refresh_token: str = Field(min_length=1) class SessionDeleteRequest(BaseModel): refresh_token: str = Field(min_length=1) class AuthUser(BaseModel): id: str email: str = Field(pattern=SUPABASE_EMAIL_PATTERN) class SessionResponse(BaseModel): access_token: str refresh_token: str expires_in: int token_type: str user: AuthUser class UserByEmailResponse(BaseModel): id: str email: str = Field(pattern=SUPABASE_EMAIL_PATTERN) created_at: str email_confirmed_at: str | None = None class UserByIdResponse(BaseModel): id: str email: str | None = None created_at: str email_confirmed_at: str | None = None class OtpSendResponse(BaseModel): email: str = Field(pattern=SUPABASE_EMAIL_PATTERN)