# Generated by ariadne-codegen
# Source: ../../../shared/graphql/schema.graphql

from datetime import datetime
from typing import Annotated, Any, List, Optional, Union

from pydantic import Field, PlainSerializer

from .base_model import BaseModel, Upload


class BucketAddInput(BaseModel):
    name: str
    title: str
    icon_url: Optional[str] = Field(alias="iconUrl", default=None)
    description: Optional[str] = None
    linked_data: Optional[Any] = Field(alias="linkedData", default=None)
    overview_url: Optional[str] = Field(alias="overviewUrl", default=None)
    tags: Optional[List[str]] = None
    relevance_score: Optional[int] = Field(alias="relevanceScore", default=None)
    sns_notification_arn: Optional[str] = Field(alias="snsNotificationArn", default=None)
    scanner_parallel_shards_depth: Optional[int] = Field(alias="scannerParallelShardsDepth", default=None)
    skip_meta_data_indexing: Optional[bool] = Field(alias="skipMetaDataIndexing", default=None)
    file_extensions_to_index: Optional[List[str]] = Field(alias="fileExtensionsToIndex", default=None)
    index_content_bytes: Optional[int] = Field(alias="indexContentBytes", default=None)
    delay_scan: Optional[bool] = Field(alias="delayScan", default=None)
    browsable: Optional[bool] = None
    prefixes: Optional[List[str]] = None


class BucketUpdateInput(BaseModel):
    title: str
    icon_url: Optional[str] = Field(alias="iconUrl", default=None)
    description: Optional[str] = None
    linked_data: Optional[Any] = Field(alias="linkedData", default=None)
    overview_url: Optional[str] = Field(alias="overviewUrl", default=None)
    tags: Optional[List[str]] = None
    relevance_score: Optional[int] = Field(alias="relevanceScore", default=None)
    sns_notification_arn: Optional[str] = Field(alias="snsNotificationArn", default=None)
    scanner_parallel_shards_depth: Optional[int] = Field(alias="scannerParallelShardsDepth", default=None)
    skip_meta_data_indexing: Optional[bool] = Field(alias="skipMetaDataIndexing", default=None)
    file_extensions_to_index: Optional[List[str]] = Field(alias="fileExtensionsToIndex", default=None)
    index_content_bytes: Optional[int] = Field(alias="indexContentBytes", default=None)
    browsable: Optional[bool] = None
    prefixes: Optional[List[str]] = None


class UserInput(BaseModel):
    name: str
    email: str
    role: str
    extra_roles: Optional[List[str]] = Field(alias="extraRoles", default=None)
