4
4
5
5
import uvicorn
6
6
from fastapi import APIRouter , Depends , FastAPI
7
+ from pydantic import ConfigDict
7
8
from fastapi_jsonapi .schema_base import Field , BaseModel as PydanticBaseModel
8
9
from sqlalchemy import Column , Integer , Text
9
10
from sqlalchemy .engine import make_url
10
- from sqlalchemy .ext .asyncio import AsyncSession , create_async_engine
11
- from sqlalchemy .ext .declarative import declarative_base
12
- from sqlalchemy .orm import sessionmaker
11
+ from sqlalchemy .ext .asyncio import AsyncSession , create_async_engine , async_sessionmaker
12
+ from sqlalchemy .orm import DeclarativeBase
13
13
14
14
from fastapi_jsonapi import RoutersJSONAPI , init
15
15
from fastapi_jsonapi .misc .sqla .generics .base import DetailViewBaseGeneric , ListViewBaseGeneric
22
22
DB_URL = f"sqlite+aiosqlite:///{ CURRENT_DIR .absolute ()} /db.sqlite3"
23
23
sys .path .append (str (PROJECT_DIR ))
24
24
25
- Base = declarative_base ()
25
+
26
+ class Base (DeclarativeBase ):
27
+ pass
26
28
27
29
28
30
class User (Base ):
@@ -32,8 +34,7 @@ class User(Base):
32
34
33
35
34
36
class BaseModel (PydanticBaseModel ):
35
- class Config :
36
- orm_mode = True
37
+ model_config = ConfigDict (from_attributes = True )
37
38
38
39
39
40
class UserAttributesBaseSchema (BaseModel ):
@@ -51,11 +52,11 @@ class UserPatchSchema(UserAttributesBaseSchema):
51
52
class UserInSchema (UserAttributesBaseSchema ):
52
53
"""User input schema."""
53
54
54
- id : int = Field (client_can_set_id = True )
55
+ id : int = Field (json_schema_extra = { "client_can_set_id" : True } )
55
56
56
57
57
58
async def get_session ():
58
- sess = sessionmaker (
59
+ sess = async_sessionmaker (
59
60
bind = create_async_engine (url = make_url (DB_URL )),
60
61
class_ = AsyncSession ,
61
62
expire_on_commit = False ,
@@ -74,8 +75,7 @@ async def sqlalchemy_init() -> None:
74
75
class SessionDependency (BaseModel ):
75
76
session : AsyncSession = Depends (get_session )
76
77
77
- class Config :
78
- arbitrary_types_allowed = True
78
+ model_config = ConfigDict (arbitrary_types_allowed = True )
79
79
80
80
81
81
def session_dependency_handler (view : ViewBase , dto : SessionDependency ) -> dict :
0 commit comments