Skip to main content

Implement simple API filter interface for Sqlalchemy

Project description

Stack:

Installation

pip install pydantic-sqlalchemy-filter

Usage

Implement UserFilter

from pydantic_sqlalchemy_filter import BaseQueryBuilder, DatabaseModel


class UserFilter(BaseQueryBuilder):
    username: str | None = Field(default=None)
    order_by: str | None = Field(default='username', alias='orderBy')

    def _filter(
        self,
        model: DatabaseModel,
        exclude_deleted: bool = False,
        query: sqlalchemy.Select | None = None,
    ) -> sqlalchemy.Select:
        if query is None:
            query = self.build_base_query(
                model=model,
                exclude_deleted=exclude_deleted,
            )

        if self.username is not None
            query = query.filter_by(username=self.username)

        return query

In FastAPI router:

    @router.get(path='')
    async def get_all_filtered_users(
        query_builder: Annotated[UserFilter, Depends()],
        session: Annotated[AsyncSession, Depends(get_async_session)],
    ) -> list[Users]:
        query = query_builder.build_select_query(model=User)
        results = await session.execute(query)
        users = results.scalars().all()

        return list(users)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_sqlalchemy_filter-0.1.1.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_sqlalchemy_filter-0.1.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_sqlalchemy_filter-0.1.1.tar.gz.

File metadata

  • Download URL: pydantic_sqlalchemy_filter-0.1.1.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.11.11 Linux/6.8.0-1017-azure

File hashes

Hashes for pydantic_sqlalchemy_filter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 94fca02c20b2ed9a1f9b08cc93f468dcfb8fcdb62aafbcd2bffd79b02d214ab4
MD5 557cc7b661fc36b7ba342369d1370445
BLAKE2b-256 a6578d9538d8c1bd1e7e2f63885e8ee15d344b60273183c0b84962fb144a38a9

See more details on using hashes here.

File details

Details for the file pydantic_sqlalchemy_filter-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_sqlalchemy_filter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 64e9cc21ef4e40c5972660c8a19bfcd5b26fda77905c0928a5071181ca3acd63
MD5 dc702f8d9c89a6a8222e1d3b512350b8
BLAKE2b-256 83fd871baa18b6646c656ed9c53163568f0f5f40c5ed2f29f8b81523d152bde4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page