"""
Nom du script : common.py
Chemin : /gitlab-bridge/app/schemas/common.py
Description : Schémas Pydantic communs partagés par les endpoints V1.
Options éventuelles : Aucune.
Exemples d'utilisation : Importer AuthContext dans d'autres schémas.
Prérequis : Python 3.11+, Pydantic 2.x.
Auteur : Sylvain SCATTOLINI
Date de création / modification : 2026-03-25
Version : 1.1
"""

from __future__ import annotations

from pydantic import BaseModel, ConfigDict, EmailStr, Field, field_validator


class AuthContext(BaseModel):
    """Contexte d'identité transmis par OpenWebUI."""

    model_config = ConfigDict(extra='forbid', str_strip_whitespace=True)

    username: str = Field(min_length=1, max_length=255)
    email: EmailStr

    @field_validator('username')
    @classmethod
    def validate_username(cls, value: str) -> str:
        value = value.strip()
        if not value:
            raise ValueError('username vide interdit')
        return value


class ApiErrorResponse(BaseModel):
    """Réponse d'erreur homogène."""

    success: bool = False
    error: str
    message: str
