diff --git a/fastapi_users_db_sqlmodel/__init__.py b/fastapi_users_db_sqlmodel/__init__.py index 695c5e2..cbf454b 100644 --- a/fastapi_users_db_sqlmodel/__init__.py +++ b/fastapi_users_db_sqlmodel/__init__.py @@ -4,13 +4,14 @@ from fastapi_users.db.base import BaseUserDatabase from fastapi_users.models import ID, OAP, UP -from pydantic import UUID4, EmailStr +from pydantic import UUID4, EmailStr, ConfigDict +from pydantic.version import VERSION as PYDANTIC_VERSION from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload from sqlmodel import Field, Session, SQLModel, func, select __version__ = "0.3.0" - +PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.") class SQLModelBaseUserDB(SQLModel): __tablename__ = "user" @@ -28,8 +29,12 @@ class SQLModelBaseUserDB(SQLModel): is_superuser: bool = Field(False, nullable=False) is_verified: bool = Field(False, nullable=False) - class Config: - orm_mode = True + if PYDANTIC_V2: # pragma: no cover + model_config = ConfigDict(from_attributes=True) # type: ignore + else: # pragma: no cover + + class Config: + orm_mode = True class SQLModelBaseOAuthAccount(SQLModel): @@ -44,8 +49,12 @@ class SQLModelBaseOAuthAccount(SQLModel): account_id: str = Field(index=True, nullable=False) account_email: str = Field(nullable=False) - class Config: - orm_mode = True + if PYDANTIC_V2: + model_config = ConfigDict(from_attributes=True) # type: ignore + else: + + class Config: + orm_mode = True class SQLModelUserDatabase(Generic[UP, ID], BaseUserDatabase[UP, ID]): diff --git a/fastapi_users_db_sqlmodel/access_token.py b/fastapi_users_db_sqlmodel/access_token.py index 8a4519e..cda3e65 100644 --- a/fastapi_users_db_sqlmodel/access_token.py +++ b/fastapi_users_db_sqlmodel/access_token.py @@ -2,14 +2,15 @@ from typing import Any, Dict, Generic, Optional, Type from fastapi_users.authentication.strategy.db import AP, AccessTokenDatabase -from pydantic import UUID4 +from pydantic import UUID4, ConfigDict +from pydantic.version import VERSION as PYDANTIC_VERSION from sqlalchemy import Column, types from sqlalchemy.ext.asyncio import AsyncSession from sqlmodel import Field, Session, SQLModel, select from fastapi_users_db_sqlmodel.generics import TIMESTAMPAware, now_utc - +PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.") class SQLModelBaseAccessToken(SQLModel): __tablename__ = "accesstoken" @@ -24,8 +25,11 @@ class SQLModelBaseAccessToken(SQLModel): ) user_id: UUID4 = Field(foreign_key="user.id", nullable=False) - class Config: - orm_mode = True + if PYDANTIC_V2: # pragma: no cover + model_config = ConfigDict(from_attributes=True) # type: ignore + else: # pragma: no cover + class Config: + orm_mode = True class SQLModelAccessTokenDatabase(Generic[AP], AccessTokenDatabase[AP]):