74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
import typing
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
class ConvertField:
|
|
|
|
def __init__(self, match, default_val=None):
|
|
self.match = match
|
|
self.default_val = default_val
|
|
|
|
def typing_return(self):
|
|
typing_dict = {
|
|
"<class 'float'>": float,
|
|
"<class 'bool'>": bool,
|
|
"<class 'int'>": int,
|
|
"<class 'str'>": str,
|
|
"<class 'dict'>": dict,
|
|
"<class 'list'>": list,
|
|
"<class 'datetime.datetime'>": datetime,
|
|
"typing.Optional[datetime.datetime]": typing.Optional[datetime],
|
|
"typing.Optional[bool]": typing.Optional[bool],
|
|
"typing.Optional[list]": typing.Optional[list],
|
|
"typing.Optional[str]": typing.Optional[str],
|
|
"typing.Optional[int]": typing.Optional[int],
|
|
"typing.Optional[float]": typing.Optional[float],
|
|
"typing.Optional[dict]": typing.Optional[dict],
|
|
}
|
|
matches_with = typing_dict.get(self.match, typing.Optional[str])
|
|
default_value = getattr(self.default_val, "field_default_value", None)
|
|
return matches_with, default_value
|
|
|
|
|
|
#
|
|
# def create_model_from_database(model_id: typing.Union[int, str]):
|
|
# if isinstance(model_id, int):
|
|
# selected_model = Models.find_one(id=model_id)
|
|
# else:
|
|
# selected_model = Models.find_one(uu_id=str(model_id))
|
|
#
|
|
# if not selected_model:
|
|
# raise HTTPException(
|
|
# status_code=202,
|
|
# detail=f"Model {selected_model.model_name} not found in database. Please add model to api.",
|
|
# )
|
|
# pydantic_class = getattr(root_validates, selected_model.model_type, None)
|
|
# if not pydantic_class:
|
|
# raise HTTPException(
|
|
# status_code=202,
|
|
# detail=f"Pydantic class {selected_model.model_type} not found in database. Please add model to api.",
|
|
# )
|
|
#
|
|
# model_entities_records = ModelEntities.filter_all(
|
|
# ModelEntities.model_id == selected_model.id
|
|
# ).data
|
|
#
|
|
# if not model_entities_records:
|
|
# raise HTTPException(
|
|
# status_code=202,
|
|
# detail="Model has no entities registered. Please add entities to model.",
|
|
# )
|
|
#
|
|
# fields = {}
|
|
# for entity in model_entities_records:
|
|
# fields[entity.field_name] = ConvertField(
|
|
# entity.field_type, entity.field_default_value
|
|
# ).typing_return()
|
|
#
|
|
# return create_model(
|
|
# __model_name=selected_model.model_name, # pydantic_name(User)
|
|
# __module__=pydantic_class.__module__, # field_name(uu_id)
|
|
# **fields, # field_name = (field_type (Optional[str]), default_value(None))
|
|
# )
|