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

Uploaded Source

Built Distribution

File details

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

File metadata

  • Download URL: pydantic_sqlalchemy_filter-0.0.9.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.5.0-1025-azure

File hashes

Hashes for pydantic_sqlalchemy_filter-0.0.9.tar.gz
Algorithm Hash digest
SHA256 8b3feb393afed589c30764b49d57b0cd154c1206fc5933ede8795adf37d29ad7
MD5 3fc31371e90456f4e06b2a5e494559d7
BLAKE2b-256 8dfbd057331345f99344ecf5e9442bacfa4ead872ca1a70514dfea597f34e6fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydantic_sqlalchemy_filter-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6b7ec11ed9edc284b0179ee43b57375f7964c5ccdac6b1742e0fad911a2a1392
MD5 7d98bd90967e5aa809713d1beba6e73a
BLAKE2b-256 400bbea428eb14b579da847884b08399467dfcf83e8b52abf8220b225941b7e5

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