# 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 UpsertUserProfile(BaseModel):
    upsert_user_profile: "UpsertUserProfileUpsertUserProfile" = Field(
        alias="upsertUserProfile"
    )


class UpsertUserProfileUpsertUserProfile(BaseModel):
    id: str
    user_id: str = Field(alias="userId")
    goals: list["UpsertUserProfileUpsertUserProfileGoals"]
    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[
        "UpsertUserProfileUpsertUserProfileEntityPreferences"
    ] = Field(alias="entityPreferences")
    created_at: Any = Field(alias="createdAt")
    updated_at: Any = Field(alias="updatedAt")


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


class UpsertUserProfileUpsertUserProfileEntityPreferences(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")


UpsertUserProfile.model_rebuild()
UpsertUserProfileUpsertUserProfile.model_rebuild()
