From 9aa83988848921f144c92f512a8932ca6f9e42bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Voron?= Date: Sun, 17 Nov 2019 09:59:03 +0100 Subject: [PATCH] Do a proper Pydantic model instantation in SQLAlchemy adapter --- fastapi_users/db/sqlalchemy.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fastapi_users/db/sqlalchemy.py b/fastapi_users/db/sqlalchemy.py index 7414fcb1..edc6076f 100644 --- a/fastapi_users/db/sqlalchemy.py +++ b/fastapi_users/db/sqlalchemy.py @@ -1,4 +1,4 @@ -from typing import List, Optional, cast +from typing import List, Optional from databases import Database from sqlalchemy import Boolean, Column, String, Table @@ -36,15 +36,18 @@ class SQLAlchemyUserDatabase(BaseUserDatabase): async def list(self) -> List[BaseUserDB]: query = self.users.select() - return cast(List[BaseUserDB], await self.database.fetch_all(query)) + users = await self.database.fetch_all(query) + return [BaseUserDB(**user) for user in users] async def get(self, id: str) -> Optional[BaseUserDB]: query = self.users.select().where(self.users.c.id == id) - return cast(BaseUserDB, await self.database.fetch_one(query)) + user = await self.database.fetch_one(query) + return BaseUserDB(**user) if user else None async def get_by_email(self, email: str) -> Optional[BaseUserDB]: query = self.users.select().where(self.users.c.email == email) - return cast(BaseUserDB, await self.database.fetch_one(query)) + user = await self.database.fetch_one(query) + return BaseUserDB(**user) if user else None async def create(self, user: BaseUserDB) -> BaseUserDB: query = self.users.insert().values(**user.dict())