Fully functional opening transactions
This commit is contained in:
@@ -2,25 +2,33 @@ from dataclasses import dataclass
|
||||
from decimal import Decimal
|
||||
from typing import Any
|
||||
|
||||
from pydantic import GetCoreSchemaHandler
|
||||
from pydantic import GetCoreSchemaHandler, GetJsonSchemaHandler
|
||||
from pydantic_core import core_schema
|
||||
from pydantic.json_schema import JsonSchemaValue
|
||||
|
||||
@dataclass
|
||||
class MonetaryAmount:
|
||||
@classmethod
|
||||
def __get_pydantic_json_schema__(
|
||||
cls, schema: core_schema.CoreSchema, handler: GetJsonSchemaHandler
|
||||
) -> JsonSchemaValue:
|
||||
json_schema = handler(schema)
|
||||
if "anyOf" in json_schema:
|
||||
for key, value in json_schema["anyOf"][0].items():
|
||||
json_schema[key] = value
|
||||
del json_schema["anyOf"]
|
||||
|
||||
json_schema["format"] = "monetary"
|
||||
|
||||
return json_schema
|
||||
|
||||
@classmethod
|
||||
def __get_pydantic_core_schema__(
|
||||
cls, source: type[Any], handler: GetCoreSchemaHandler
|
||||
) -> core_schema.CoreSchema:
|
||||
assert source is MonetaryAmount
|
||||
return core_schema.no_info_after_validator_function(
|
||||
cls._validate,
|
||||
core_schema.decimal_schema(multiple_of=0.01),
|
||||
serialization=core_schema.plain_serializer_function_ser_schema(
|
||||
cls._serialize,
|
||||
info_arg=False,
|
||||
return_schema=core_schema.decimal_schema(multiple_of=0.01),
|
||||
),
|
||||
)
|
||||
|
||||
return core_schema.decimal_schema(multiple_of=0.01)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user