From 455794fdca1a2c5cbad58dcc60e62043e96f6f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leynier=20Guti=C3=A9rrez=20Gonz=C3=A1lez?= Date: Sun, 14 Nov 2021 18:09:23 +0000 Subject: [PATCH] feat: add datetime and uuid types --- gotrue/_async/client.py | 2 +- gotrue/_sync/client.py | 2 +- gotrue/types.py | 38 ++++++++++++++++++++------------------ 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/gotrue/_async/client.py b/gotrue/_async/client.py index 8ed70625..470f7201 100644 --- a/gotrue/_async/client.py +++ b/gotrue/_async/client.py @@ -607,7 +607,7 @@ async def _save_session(self, *, session: Session) -> None: async def _persist_session(self, *, session: Session) -> None: data = {"session": session.dict(), "expires_at": session.expires_at} - await self.local_storage.set_item(STORAGE_KEY, dumps(data)) + await self.local_storage.set_item(STORAGE_KEY, dumps(data, default=str)) async def _remove_session(self) -> None: """Remove the session.""" diff --git a/gotrue/_sync/client.py b/gotrue/_sync/client.py index 49a3324b..6b2521f6 100644 --- a/gotrue/_sync/client.py +++ b/gotrue/_sync/client.py @@ -601,7 +601,7 @@ def _save_session(self, *, session: Session) -> None: def _persist_session(self, *, session: Session) -> None: data = {"session": session.dict(), "expires_at": session.expires_at} - self.local_storage.set_item(STORAGE_KEY, dumps(data)) + self.local_storage.set_item(STORAGE_KEY, dumps(data, default=str)) def _remove_session(self) -> None: """Remove the session.""" diff --git a/gotrue/types.py b/gotrue/types.py index e5fca5aa..5ff66061 100644 --- a/gotrue/types.py +++ b/gotrue/types.py @@ -1,8 +1,10 @@ from __future__ import annotations +from datetime import datetime from enum import Enum from time import time from typing import Any, Callable, Dict, List, Optional, Type, TypeVar, Union +from uuid import UUID from httpx import Response from pydantic import BaseModel, root_validator @@ -43,38 +45,38 @@ class CookieOptions(BaseModelFromResponse): class Identity(BaseModelFromResponse): - id: str - user_id: str + id: UUID + user_id: UUID provider: str - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime identity_data: Optional[Dict[str, Any]] = None - last_sign_in_at: Optional[str] = None + last_sign_in_at: Optional[datetime] = None class User(BaseModelFromResponse): app_metadata: Dict[str, Any] aud: str - created_at: str - id: str + created_at: datetime + id: UUID user_metadata: Dict[str, Any] identities: Optional[List[Identity]] = None - confirmation_sent_at: Optional[str] = None + confirmation_sent_at: Optional[datetime] = None action_link: Optional[str] = None - last_sign_in_at: Optional[str] = None + last_sign_in_at: Optional[datetime] = None phone: Optional[str] = None - phone_confirmed_at: Optional[str] = None - recovery_sent_at: Optional[str] = None + phone_confirmed_at: Optional[datetime] = None + recovery_sent_at: Optional[datetime] = None role: Optional[str] = None - updated_at: Optional[str] = None - email_confirmed_at: Optional[str] = None - confirmed_at: Optional[str] = None - invited_at: Optional[str] = None + updated_at: Optional[datetime] = None + email_confirmed_at: Optional[datetime] = None + confirmed_at: Optional[datetime] = None + invited_at: Optional[datetime] = None email: Optional[str] = None new_email: Optional[str] = None - email_change_sent_at: Optional[str] = None + email_change_sent_at: Optional[datetime] = None new_phone: Optional[str] = None - phone_change_sent_at: Optional[str] = None + phone_change_sent_at: Optional[datetime] = None class UserAttributes(BaseModelFromResponse): @@ -117,7 +119,7 @@ class AuthChangeEvent(str, Enum): class Subscription(BaseModelFromResponse): - id: str + id: UUID """The subscriber UUID. This will be set by the client.""" callback: Callable[[AuthChangeEvent, Optional[Session]], None] """The function to call every time there is an event."""