from typing import Any, Optional
from pyracmon import Model, CRUDMixin
from pyracmon.model_graph import GraphEntityMixin
from pyracmon.stub import ModelTransform
from pyracmon.testing import TestingMixin
from pyracmon.dialect.postgresql import PostgreSQLMixin
from datetime import time, datetime, date, timedelta
from uuid import UUID

class t1(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    c11: int = ...
    c12: int = ...
    c13: str = ...

class t2(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    c21: int = ...
    c22: int = ...
    c23: str = ...

class t3(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    c31: int = ...
    c32: int = ...
    c33: Optional[str] = ...

class t4(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    c41: int = ...
    c42: int = ...
    c43: int = ...

class types(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    bool_: Optional[bool] = ...
    double_: Optional[float] = ...
    int_: Optional[int] = ...
    string_: Optional[str] = ...
    bytes_: Optional[bytes] = ...
    date_: Optional[date] = ...
    datetime_: Optional[datetime] = ...
    time_: Optional[time] = ...
    delta_: Optional[timedelta] = ...
    uuid_: Optional[UUID] = ...
    enum_: Optional[Any] = ...
    record_: Optional[Any] = ...
    array_: Optional[list[int]] = ...
    deeparray_: Optional[list[int]] = ...
    json_: Optional[Any] = ...
    jsonb_: Optional[Any] = ...

class v1(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    c11: Optional[int] = ...
    c12: Optional[int] = ...
    c31: Optional[int] = ...
    c32: Optional[int] = ...

class mv1(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    c11: Optional[int] = ...
    c12: Optional[int] = ...
    c31: Optional[int] = ...
    c32: Optional[int] = ...

class mv2(PostgreSQLMixin, TestingMixin, CRUDMixin, GraphEntityMixin, ModelTransform):
    bool_: Optional[bool] = ...
    double_: Optional[float] = ...
    int_: Optional[int] = ...
    string_: Optional[str] = ...
    bytes_: Optional[bytes] = ...
    date_: Optional[date] = ...
    datetime_: Optional[datetime] = ...
    time_: Optional[time] = ...
    delta_: Optional[timedelta] = ...
    uuid_: Optional[UUID] = ...
    enum_: Optional[Any] = ...
    record_: Optional[Any] = ...
    array_: Optional[list[int]] = ...
    deeparray_: Optional[list[int]] = ...
    json_: Optional[Any] = ...
    jsonb_: Optional[Any] = ...
