# Generated by ariadne-codegen
# Source: ../../src/graphql/operations

from typing import Any, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import DietStyle, ExperienceLevel, GoalType, PreferredFormat, TimeBudget


class Me(BaseModel):
    me: Optional["MeMe"]


class MeMe(BaseModel):
    id: str
    email: str
    name: Optional[str]
    role: str
    profile: Optional["MeMeProfile"]


class MeMeProfile(BaseModel):
    id: str
    user_id: str = Field(alias="userId")
    goals: list["MeMeProfileGoals"]
    experience_level: Optional[ExperienceLevel] = Field(alias="experienceLevel")
    diet_style: Optional[DietStyle] = Field(alias="dietStyle")
    avoidances: list[str]
    time_budget: Optional[TimeBudget] = Field(alias="timeBudget")
    preferred_formats: list[PreferredFormat] = Field(alias="preferredFormats")
    topic_interests: list[str] = Field(alias="topicInterests")
    entity_preferences: Optional["MeMeProfileEntityPreferences"] = Field(
        alias="entityPreferences"
    )
    created_at: Any = Field(alias="createdAt")
    updated_at: Any = Field(alias="updatedAt")


class MeMeProfileGoals(BaseModel):
    goal_type: GoalType = Field(alias="goalType")
    priority: int
    notes: Optional[str]


class MeMeProfileEntityPreferences(BaseModel):
    liked_entity_ids: list[str] = Field(alias="likedEntityIds")
    hidden_entity_ids: list[str] = Field(alias="hiddenEntityIds")
    blocked_entity_ids: list[str] = Field(alias="blockedEntityIds")


Me.model_rebuild()
MeMe.model_rebuild()
MeMeProfile.model_rebuild()
