From ba8d77582eab4b3e0f676560c7edd0c9e31741d0 Mon Sep 17 00:00:00 2001 From: nirn Date: Thu, 6 Jan 2022 15:46:15 +0200 Subject: [PATCH] Support more object types in BetterJsonEncoder https://github.com/a-luna/fastapi-redis-cache/issues/57 --- src/fastapi_redis_cache/util.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/fastapi_redis_cache/util.py b/src/fastapi_redis_cache/util.py index 663bf3c..2800ee3 100644 --- a/src/fastapi_redis_cache/util.py +++ b/src/fastapi_redis_cache/util.py @@ -1,6 +1,9 @@ import json from datetime import date, datetime from decimal import Decimal +from uuid import UUID +from enum import Enum +from pydantic import BaseModel from dateutil import parser @@ -28,6 +31,12 @@ def default(self, obj): return {"val": obj.strftime(DATE_ONLY), "_spec_type": str(date)} elif isinstance(obj, Decimal): return {"val": str(obj), "_spec_type": str(Decimal)} + elif isinstance(obj, BaseModel): + return obj.dict() + elif isinstance(obj, UUID): + return str(obj) + elif isinstance(obj, Enum): + return str(obj.value) else: # pragma: no cover return super().default(obj)