migrate to pydantic 2

This commit is contained in:
Jakub Miazek 2023-07-07 20:32:41 +02:00
parent d07fb04553
commit d05f2cdb2e
8 changed files with 17 additions and 23 deletions

1
.env
View File

@ -6,6 +6,7 @@ SQL_TEST_DB=testdb
SQL_HOST=db SQL_HOST=db
SQL_USER=user SQL_USER=user
SQL_PASS=secret SQL_PASS=secret
SQL_URL=postgresql+asyncpg://${SQL_USER}:${SQL_PASS}@${SQL_HOST}/${SQL_DB}
ALGORITHM=HS256 ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30 ACCESS_TOKEN_EXPIRE_MINUTES=30

View File

@ -36,7 +36,7 @@ async def update_nonsense(
db_session: AsyncSession = Depends(get_db), db_session: AsyncSession = Depends(get_db),
): ):
nonsense = await Nonsense.find(db_session, name) nonsense = await Nonsense.find(db_session, name)
await nonsense.update(db_session, **payload.dict()) await nonsense.update(db_session, **payload.model_dump())
return nonsense return nonsense
@ -45,6 +45,6 @@ async def merge_nonsense(
payload: NonsenseSchema, payload: NonsenseSchema,
db_session: AsyncSession = Depends(get_db), db_session: AsyncSession = Depends(get_db),
): ):
nonsense = Nonsense(**payload.dict()) nonsense = Nonsense(**payload.model_dump())
await nonsense.save_or_update(db_session) await nonsense.save_or_update(db_session)
return nonsense return nonsense

View File

@ -1,7 +1,6 @@
from typing import Annotated from typing import Annotated
from fastapi import APIRouter, Depends, Query from fastapi import APIRouter, Depends, Query
from pydantic import Required
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from app.database import get_db from app.database import get_db
@ -14,7 +13,7 @@ router = APIRouter(prefix="/v1/shakespeare")
"/", "/",
) )
async def find_paragraph( async def find_paragraph(
character: Annotated[str, Query(description="Character name")] = Required, character: Annotated[str, Query(description="Character name")],
db_session: AsyncSession = Depends(get_db), db_session: AsyncSession = Depends(get_db),
): ):
return await Paragraph.find(db_session=db_session, character=character) return await Paragraph.find(db_session=db_session, character=character)

View File

@ -54,5 +54,5 @@ async def update_stuff(
db_session: AsyncSession = Depends(get_db), db_session: AsyncSession = Depends(get_db),
): ):
stuff = await Stuff.find(db_session, name) stuff = await Stuff.find(db_session, name)
await stuff.update(db_session, **payload.dict()) await stuff.update(db_session, **payload.model_dump())
return stuff return stuff

View File

@ -1,18 +1,12 @@
import os import os
from functools import lru_cache from functools import lru_cache
from pydantic import BaseSettings, PostgresDsn from pydantic import PostgresDsn
from pydantic_settings import BaseSettings
class Settings(BaseSettings): class Settings(BaseSettings):
asyncpg_url: PostgresDsn = PostgresDsn.build( asyncpg_url: PostgresDsn = os.getenv("SQL_URL")
scheme="postgresql+asyncpg",
user=os.getenv("SQL_USER"),
password=os.getenv("POSTGRES_PASSWORD"),
host=os.getenv("SQL_HOST"),
port="5432",
path=f"/{os.getenv('SQL_DB') or ''}",
)
@lru_cache @lru_cache

View File

@ -10,7 +10,7 @@ global_settings = config.get_settings()
logger = AppLogger.__call__().get_logger() logger = AppLogger.__call__().get_logger()
engine = create_async_engine( engine = create_async_engine(
global_settings.asyncpg_url, global_settings.asyncpg_url.unicode_string(),
future=True, future=True,
echo=True, echo=True,
) )

View File

@ -14,8 +14,8 @@ class NonsenseSchema(BaseModel):
) )
class Config: class Config:
orm_mode = True from_attributes = True
schema_extra = { json_schema_extra = {
"example": { "example": {
"name": "Name for Some Nonsense", "name": "Name for Some Nonsense",
"description": "Some Nonsense Description", "description": "Some Nonsense Description",
@ -38,8 +38,8 @@ class NonsenseResponse(BaseModel):
) )
class Config: class Config:
orm_mode = True from_attributes = True
schema_extra = { json_schema_extra = {
"example": { "example": {
"config_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "config_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Name for Some Nonsense", "name": "Name for Some Nonsense",

View File

@ -14,8 +14,8 @@ class StuffSchema(BaseModel):
) )
class Config: class Config:
orm_mode = True from_attributes = True
schema_extra = { json_schema_extra = {
"example": { "example": {
"name": "Name for Some Stuff", "name": "Name for Some Stuff",
"description": "Some Stuff Description", "description": "Some Stuff Description",
@ -38,8 +38,8 @@ class StuffResponse(BaseModel):
) )
class Config: class Config:
orm_mode = True from_attributes = True
schema_extra = { json_schema_extra = {
"example": { "example": {
"config_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "config_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Name for Some Stuff", "name": "Name for Some Stuff",