new api service and logic implemented
This commit is contained in:
58
ApiLayers/ApiValidations/handler.py
Normal file
58
ApiLayers/ApiValidations/handler.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""
|
||||
Base validation models and utilities.
|
||||
"""
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
def rewrite_input_data(data):
|
||||
"""Remove empty and None values from input data."""
|
||||
return {
|
||||
item[0]: item[1]
|
||||
for item in data.items()
|
||||
if not item[1] == "" and item[1] is not None
|
||||
}
|
||||
|
||||
|
||||
class BaseModelRegular(BaseModel):
|
||||
"""Base model for all validation models with proper schema handling."""
|
||||
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={"example": {}} # Will be populated by subclasses
|
||||
)
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**rewrite_input_data(kwargs))
|
||||
|
||||
def excluded_dump(self):
|
||||
return self.model_dump(exclude_unset=True, exclude_none=True)
|
||||
|
||||
def dump(self):
|
||||
return self.model_dump()
|
||||
|
||||
@classmethod
|
||||
def model_json_schema(cls, *args, **kwargs):
|
||||
"""Generate JSON schema with proper examples."""
|
||||
schema = super().model_json_schema(*args, **kwargs)
|
||||
|
||||
# Add examples based on field types
|
||||
if "properties" in schema:
|
||||
example = {}
|
||||
for field_name, field_schema in schema["properties"].items():
|
||||
field_type = field_schema.get("type")
|
||||
if field_type == "string":
|
||||
example[field_name] = f"example_{field_name}"
|
||||
elif field_type == "integer":
|
||||
example[field_name] = 0
|
||||
elif field_type == "number":
|
||||
example[field_name] = 0.0
|
||||
elif field_type == "boolean":
|
||||
example[field_name] = False
|
||||
elif field_type == "array":
|
||||
example[field_name] = []
|
||||
elif field_type == "object":
|
||||
example[field_name] = {}
|
||||
|
||||
schema["example"] = example
|
||||
|
||||
return schema
|
||||
Reference in New Issue
Block a user