| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | from enum import Enumfrom sqlalchemy import CHAR, TypeDecoratorfrom sqlalchemy.dialects.postgresql import UUIDclass CreatedByRole(Enum):    """    Enum class for createdByRole    """    ACCOUNT = "account"    END_USER = "end_user"    @classmethod    def value_of(cls, value: str) -> 'CreatedByRole':        """        Get value of given mode.        :param value: mode value        :return: mode        """        for role in cls:            if role.value == value:                return role        raise ValueError(f'invalid createdByRole value {value}')class CreatedFrom(Enum):    """    Enum class for createdFrom    """    SERVICE_API = "service-api"    WEB_APP = "web-app"    EXPLORE = "explore"    @classmethod    def value_of(cls, value: str) -> 'CreatedFrom':        """        Get value of given mode.        :param value: mode value        :return: mode        """        for role in cls:            if role.value == value:                return role        raise ValueError(f'invalid createdFrom value {value}')class StringUUID(TypeDecorator):    impl = CHAR    cache_ok = True    def process_bind_param(self, value, dialect):        if value is None:            return value        elif dialect.name == 'postgresql':            return str(value)        else:            return value.hex    def load_dialect_impl(self, dialect):        if dialect.name == 'postgresql':            return dialect.type_descriptor(UUID())        else:            return dialect.type_descriptor(CHAR(36))    def process_result_value(self, value, dialect):        if value is None:            return value        return str(value)
 |