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.0.10.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

File details

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

File metadata

  • Download URL: pydantic_sqlalchemy_filter-0.0.10.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.4 Linux/6.8.0-48-generic

File hashes

Hashes for pydantic_sqlalchemy_filter-0.0.10.tar.gz
Algorithm Hash digest
SHA256 c40ff540e69f8b754ddeae5c8f59e5fa9352292215aa06bddd20c0d17b066fdc
MD5 31a15ae8b4dce53acff14a1658f7754c
BLAKE2b-256 c53e48a48e1807709de8d15955434e4a5f7b9095679e9df73fa2b006a13336d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydantic_sqlalchemy_filter-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 ae043ee8b79fb1da6df4d512042e7a0f7dc8653dfee5a1ed5cc0b59d12906c8c
MD5 9f84fee34246aeff83ea098aadb84114
BLAKE2b-256 9f9ce096dc47036c50a1ce27bd682317562624d1190355de5da6f20296388355

See more details on using hashes here.

Supported by

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