Metadata-Version: 2.1
Name: fastapi-query-conditions
Version: 1.0.0
Summary: FastAPI-Query-Conditions is a dependency that parses a query string into conditions using operators enclosed in square brackets
Home-page: https://github.com/jonghwanhyeon/fastapi-query-conditions
Author: Jonghwan Hyeon
Author-email: jonghwanhyeon93@gmail.com
License: MIT
Keywords: fastapi,query,querystring,condition
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Home Automation
Description-Content-Type: text/markdown
License-File: LICENSE

# fastapi-query-conditions

## Introduction
FastAPI-Query-Conditions is a dependency that parses a query string into conditions using operators enclosed in square brackets.
For example, if you send a request to `/orders?amount[gte]=1000&amount[lt]=2000`, you can use the query string as parsed conditions like this:
```json
{"gte":1000,"lt":2000}
```


## Install
```bash
> pip install fastapi-query-conditions
```

## Quick Start
```python
from typing import Dict

from fastapi import Depends, FastAPI
from fastapi_query_conditions import query_conditions

app = FastAPI()

@app.get("/items")
def read_root(amount: Dict[str, int] = Depends(query_conditions(field='amount', factory=int))):
    print(amount)
    return amount
```

Then, if you send a request to `/items?amount[gte]=1000&amount[lt]=2000`, you can check the following results.
```python
{'gte': 1000, 'lt': 2000}
```

Also, you can use various factory functions for your query parameter.
```python
from typing import Dict

from fastapi import Depends, FastAPI
from fastapi_query_conditions import query_conditions
from datetime import datetime

app = FastAPI()

@app.get("/orders")
def read_root(time: Dict[str, int] = Depends(query_conditions(field='time', factory=datetime.fromisoformat))):
    print(time)
    return time
```

Then, if you send a request to `/orders?time[gte]=2022-10-18T12:00&time[lt]=2022-10-18T12:30`, you can check the following results.
```python
{'gte': datetime.datetime(2022, 10, 18, 12, 0), 'lt': datetime.datetime(2022, 10, 18, 12, 30)}
```
