# Generated by ariadne-codegen
# Source: ./documents

from typing import Any, List, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import EntityState, LinkTypes


class QueryPersonsExpanded(BaseModel):
    persons: Optional["QueryPersonsExpandedPersons"]


class QueryPersonsExpandedPersons(BaseModel):
    results: Optional[List[Optional["QueryPersonsExpandedPersonsResults"]]]


class QueryPersonsExpandedPersonsResults(BaseModel):
    id: str
    name: str
    creation_date: Any = Field(alias="creationDate")
    modified_date: Optional[Any] = Field(alias="modifiedDate")
    relevance: Optional[float]
    owner: "QueryPersonsExpandedPersonsResultsOwner"
    state: EntityState
    alternate_names: Optional[List[Optional[str]]] = Field(alias="alternateNames")
    uri: Optional[Any]
    description: Optional[str]
    identifier: Optional[str]
    thing: Optional[str]
    feeds: Optional[List[Optional["QueryPersonsExpandedPersonsResultsFeeds"]]]
    links: Optional[List[Optional["QueryPersonsExpandedPersonsResultsLinks"]]]
    workflow: Optional["QueryPersonsExpandedPersonsResultsWorkflow"]
    location: Optional["QueryPersonsExpandedPersonsResultsLocation"]
    h_3: Optional["QueryPersonsExpandedPersonsResultsH3"] = Field(alias="h3")
    address: Optional["QueryPersonsExpandedPersonsResultsAddress"]
    email: Optional[str]
    given_name: Optional[str] = Field(alias="givenName")
    family_name: Optional[str] = Field(alias="familyName")
    phone_number: Optional[str] = Field(alias="phoneNumber")
    birth_date: Optional[Any] = Field(alias="birthDate")
    title: Optional[str]
    occupation: Optional[str]
    education: Optional[str]
    works_for: Optional[
        List[Optional["QueryPersonsExpandedPersonsResultsWorksFor"]]
    ] = Field(alias="worksFor")
    affiliation: Optional[
        List[Optional["QueryPersonsExpandedPersonsResultsAffiliation"]]
    ]
    member_of: Optional[
        List[Optional["QueryPersonsExpandedPersonsResultsMemberOf"]]
    ] = Field(alias="memberOf")
    alumni_of: Optional[
        List[Optional["QueryPersonsExpandedPersonsResultsAlumniOf"]]
    ] = Field(alias="alumniOf")
    birth_place: Optional["QueryPersonsExpandedPersonsResultsBirthPlace"] = Field(
        alias="birthPlace"
    )
    death_place: Optional["QueryPersonsExpandedPersonsResultsDeathPlace"] = Field(
        alias="deathPlace"
    )
    home_location: Optional[
        List[Optional["QueryPersonsExpandedPersonsResultsHomeLocation"]]
    ] = Field(alias="homeLocation")
    work_location: Optional[
        List[Optional["QueryPersonsExpandedPersonsResultsWorkLocation"]]
    ] = Field(alias="workLocation")


class QueryPersonsExpandedPersonsResultsOwner(BaseModel):
    id: str


class QueryPersonsExpandedPersonsResultsFeeds(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsLinks(BaseModel):
    uri: Optional[Any]
    link_type: Optional[LinkTypes] = Field(alias="linkType")
    excerpts: Optional[str]


class QueryPersonsExpandedPersonsResultsWorkflow(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsLocation(BaseModel):
    latitude: Optional[float]
    longitude: Optional[float]


class QueryPersonsExpandedPersonsResultsH3(BaseModel):
    h_3_r_0: Optional[str] = Field(alias="h3r0")
    h_3_r_1: Optional[str] = Field(alias="h3r1")
    h_3_r_2: Optional[str] = Field(alias="h3r2")
    h_3_r_3: Optional[str] = Field(alias="h3r3")
    h_3_r_4: Optional[str] = Field(alias="h3r4")
    h_3_r_5: Optional[str] = Field(alias="h3r5")
    h_3_r_6: Optional[str] = Field(alias="h3r6")
    h_3_r_7: Optional[str] = Field(alias="h3r7")
    h_3_r_8: Optional[str] = Field(alias="h3r8")
    h_3_r_9: Optional[str] = Field(alias="h3r9")
    h_3_r_10: Optional[str] = Field(alias="h3r10")
    h_3_r_11: Optional[str] = Field(alias="h3r11")
    h_3_r_12: Optional[str] = Field(alias="h3r12")
    h_3_r_13: Optional[str] = Field(alias="h3r13")
    h_3_r_14: Optional[str] = Field(alias="h3r14")
    h_3_r_15: Optional[str] = Field(alias="h3r15")


class QueryPersonsExpandedPersonsResultsAddress(BaseModel):
    street_address: Optional[str] = Field(alias="streetAddress")
    city: Optional[str]
    region: Optional[str]
    country: Optional[str]
    postal_code: Optional[str] = Field(alias="postalCode")


class QueryPersonsExpandedPersonsResultsWorksFor(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsAffiliation(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsMemberOf(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsAlumniOf(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsBirthPlace(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsDeathPlace(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsHomeLocation(BaseModel):
    id: str
    name: str


class QueryPersonsExpandedPersonsResultsWorkLocation(BaseModel):
    id: str
    name: str


QueryPersonsExpanded.model_rebuild()
QueryPersonsExpandedPersons.model_rebuild()
QueryPersonsExpandedPersonsResults.model_rebuild()
