types, again

This commit is contained in:
Yusur 2025-07-31 23:27:59 +02:00
parent 9286a01de0
commit 7478c8e404

View file

@ -14,8 +14,9 @@ This software is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
""" """
from __future__ import annotations
from sqlalchemy import Engine, Select, func, select from sqlalchemy import Engine, Select, func, select
from sqlalchemy.orm import DeclarativeBase, Session, lazyload from sqlalchemy.orm import DeclarativeBase, lazyload
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from flask_sqlalchemy.pagination import Pagination from flask_sqlalchemy.pagination import Pagination
@ -37,7 +38,7 @@ class SQLAlchemy:
self.engine = None self.engine = None
def bind(self, url: str): def bind(self, url: str):
self.engine = create_async_engine(url) self.engine = create_async_engine(url)
async def begin(self) -> Session: async def begin(self) -> AsyncSession:
if self.engine is None: if self.engine is None:
raise RuntimeError('database is not connected') raise RuntimeError('database is not connected')
return await self.engine.begin() return await self.engine.begin()
@ -47,8 +48,9 @@ class SQLAlchemy:
async def paginate(self, select: Select, *, async def paginate(self, select: Select, *,
page: int | None = None, per_page: int | None = None, page: int | None = None, per_page: int | None = None,
max_per_page: int | None = None, error_out: bool = True, max_per_page: int | None = None, error_out: bool = True,
count: bool = True): count: bool = True) -> AsyncSelectPagination:
""" """
...
""" """
async with self as session: async with self as session:
return AsyncSelectPagination( return AsyncSelectPagination(
@ -60,7 +62,6 @@ class SQLAlchemy:
) )
class AsyncSelectPagination(Pagination): class AsyncSelectPagination(Pagination):
""" """
flask_sqlalchemy.SelectPagination but asynchronous flask_sqlalchemy.SelectPagination but asynchronous