Spaces:
Running
Running
from enum import Enum | |
from sqlalchemy import CHAR, TypeDecorator | |
from sqlalchemy.dialects.postgresql import UUID | |
class CreatedByRole(Enum): | |
""" | |
Enum class for createdByRole | |
""" | |
ACCOUNT = "account" | |
END_USER = "end_user" | |
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" | |
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) | |