ariadne-django
ariadne-django copied to clipboard
Change timedelta scalar to return ISO format
Currently the timedelta
scalar serializer returns a float equivalent to the total amount of seconds.
https://github.com/reset-button/ariadne_django/blob/5a7c9d15a2b0e0baa8b7e7aad032c738a3dcd1fe/ariadne_django/scalars/timedelta.py#L10-L12
It could be an idea to return the ISO format for durations (see https://en.wikipedia.org/wiki/ISO_8601#Durations). Since python doesn't implement a way to do timedelta(days=1).isoformat()
, we could use django duration_iso_string
:
from datetime import timedelta
from django.utils.duration import duration_iso_string
timedelta_scalar = ScalarType("Timedelta")
@timedelta_scalar.serializer
def serialize_timedelta(value: timedelta) -> float:
return duration_iso_string(value)
Also instead of Timedelta
it could be called Duration