from typing import Union

from typing_extensions import Literal

# Native Dataiku Data Types: https://doc.dataiku.com/dss/latest/schemas/definitions.html#storage-types
NativeDataikuDataType = Union[
    Literal["string"],
    Literal["boolean"],
    Literal["date"],
    Literal["datetimenotz"],
    Literal["dateonly"],
    Literal["tinyint"],
    Literal["smallint"],
    Literal["int"],
    Literal["bigint"],
    Literal["float"],
    Literal["double"],
    Literal["object"],
    Literal["array"],
    Literal["map"],
    Literal["geopoint"],
    Literal["geometry"],
]

# VG extension of Dataiku data types to handle graph specific types (node, edge and path -> a path between two nodes).
GraphDataikuDataType = Union[
    NativeDataikuDataType, Literal["hugeint"], Literal["node"], Literal["edge"], Literal["path"]
]
