unboil-fastapi-query


Nameunboil-fastapi-query JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryA library providing tools for easily querying a FastAPI application.
upload_time2025-08-16 05:27:35
maintainerNone
docs_urlNone
authoreyueldk
requires_python>=3.9
licenseMIT
keywords fastapi filter pagination query sorting sqlalchemy unboil
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # unboil-fastapi-query

Easily add advanced filtering and sorting to your FastAPI endpoints using SQLAlchemy.

## Installation

```bash
pip install unboil-fastapi-query
```

## Quick Start

1. **Define your SQLAlchemy models** as usual.
2. **Build a query model** using `build_query`:

```python
from unboil_fastapi_query import build_query, FilterOperation

ExampleQuery = build_query(
	filters={
		Example.id: FilterOperation.EQ,
		Example.name: "*",  # allow all operations
	},
	sortables=[Example.name]
)
```

3. **Use `QueryDepends` in your FastAPI endpoint**:

```python
from unboil_fastapi_query import QueryDepends

@app.get("/", response_model=list[ExampleRead])
def list(query = QueryDepends(ExampleQuery)):
	with Session(engine) as session:
		stmt = select(Example)
		stmt = apply_query(stmt, query)
		result = session.execute(stmt)
		return result.scalars().all()
```

4. **Enjoy automatic filtering and sorting** via query parameters:

- `/api?filter.name.eq=Alice`  
- `/api?sort=sort.name.asc`

## Example

See `examples/main.py` for a complete example.

## Testing

Run tests with:

```bash
pytest
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "unboil-fastapi-query",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "fastapi, filter, pagination, query, sorting, sqlalchemy, unboil",
    "author": "eyueldk",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/a1/d4/74099f0f3177712e26c992a49010d08b0bd63f67b31b588951358239c74c/unboil_fastapi_query-0.1.2.tar.gz",
    "platform": null,
    "description": "# unboil-fastapi-query\n\nEasily add advanced filtering and sorting to your FastAPI endpoints using SQLAlchemy.\n\n## Installation\n\n```bash\npip install unboil-fastapi-query\n```\n\n## Quick Start\n\n1. **Define your SQLAlchemy models** as usual.\n2. **Build a query model** using `build_query`:\n\n```python\nfrom unboil_fastapi_query import build_query, FilterOperation\n\nExampleQuery = build_query(\n\tfilters={\n\t\tExample.id: FilterOperation.EQ,\n\t\tExample.name: \"*\",  # allow all operations\n\t},\n\tsortables=[Example.name]\n)\n```\n\n3. **Use `QueryDepends` in your FastAPI endpoint**:\n\n```python\nfrom unboil_fastapi_query import QueryDepends\n\n@app.get(\"/\", response_model=list[ExampleRead])\ndef list(query = QueryDepends(ExampleQuery)):\n\twith Session(engine) as session:\n\t\tstmt = select(Example)\n\t\tstmt = apply_query(stmt, query)\n\t\tresult = session.execute(stmt)\n\t\treturn result.scalars().all()\n```\n\n4. **Enjoy automatic filtering and sorting** via query parameters:\n\n- `/api?filter.name.eq=Alice`  \n- `/api?sort=sort.name.asc`\n\n## Example\n\nSee `examples/main.py` for a complete example.\n\n## Testing\n\nRun tests with:\n\n```bash\npytest\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A library providing tools for easily querying a FastAPI application.",
    "version": "0.1.2",
    "project_urls": {
        "homepage": "https://github.com/eyueldk/unboil-fastapi-query",
        "repository": "https://github.com/eyueldk/unboil-fastapi-query"
    },
    "split_keywords": [
        "fastapi",
        " filter",
        " pagination",
        " query",
        " sorting",
        " sqlalchemy",
        " unboil"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b52435fcf993060af1ddd749cb6501a1f2c17125f98956976308fbaf2ee9bded",
                "md5": "c296055cc30450691ca746b035f77c65",
                "sha256": "5f5b4e49048f6315eae093e5fd2f9df66c84e26df370c75fdaa22977bdefd80f"
            },
            "downloads": -1,
            "filename": "unboil_fastapi_query-0.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c296055cc30450691ca746b035f77c65",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 4646,
            "upload_time": "2025-08-16T05:27:34",
            "upload_time_iso_8601": "2025-08-16T05:27:34.349378Z",
            "url": "https://files.pythonhosted.org/packages/b5/24/35fcf993060af1ddd749cb6501a1f2c17125f98956976308fbaf2ee9bded/unboil_fastapi_query-0.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a1d474099f0f3177712e26c992a49010d08b0bd63f67b31b588951358239c74c",
                "md5": "1832f194e8f1551d25de310399414333",
                "sha256": "51c077c3e73b5f0c7a1bd79c17ae0a9217c7a73466d078aaaf027ed6d337cb4c"
            },
            "downloads": -1,
            "filename": "unboil_fastapi_query-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "1832f194e8f1551d25de310399414333",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 43009,
            "upload_time": "2025-08-16T05:27:35",
            "upload_time_iso_8601": "2025-08-16T05:27:35.279932Z",
            "url": "https://files.pythonhosted.org/packages/a1/d4/74099f0f3177712e26c992a49010d08b0bd63f67b31b588951358239c74c/unboil_fastapi_query-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-16 05:27:35",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "eyueldk",
    "github_project": "unboil-fastapi-query",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "unboil-fastapi-query"
}
        
Elapsed time: 1.29069s