# Akvo-ResponseGrouper
![PyPI](https://img.shields.io/pypi/v/AkvoResponseGrouper)
[![Build Status](https://github.com/akvo/Akvo-ResponseGrouper/actions/workflows/test.yml/badge.svg)](https://github.com/akvo/Akvo-ResponseGrouper/actions) [![Repo Size](https://img.shields.io/github/repo-size/akvo/Akvo-ResponseGrouper)](https://img.shields.io/github/repo-size/akvo/Akvo-ResponseGrouper) [![Coverage Status](https://coveralls.io/repos/github/akvo/Akvo-ResponseGrouper/badge.svg?branch=main)](https://coveralls.io/github/akvo/Akvo-ResponseGrouper?branch=main) [![Languages](https://img.shields.io/github/languages/count/akvo/Akvo-ResponseGrouper
)](https://img.shields.io/github/languages/count/akvo/Akvo-ResponseGrouper
) [![Issues](https://img.shields.io/github/issues/akvo/Akvo-ResponseGrouper
)](https://img.shields.io/github/issues/akvo/Akvo-ResponseGrouper
) [![Last Commit](https://img.shields.io/github/last-commit/akvo/Akvo-ResponseGrouper/main
)](https://img.shields.io/github/last-commit/akvo/Akvo-ResponseGrouper/main) [![Documentation Status](https://readthedocs.org/projects/Akvo-ResponseGrouper/badge/?version=latest)](https://Akvo-ResponseGrouper.readthedocs.io/en/latest/?badge=latest) [![GitHub license](https://img.shields.io/github/license/akvo/Akvo-ResponseGrouper.svg)](https://github.com/akvo/Akvo-ResponseGrouper/blob/main/LICENSE)
Fast-API Response catalog for pre-computed query
## Install
```
$ pip install AkvoResponseGrouper
```
## Schema Requirements
Please follow [the required schema](https://github.com/akvo/Akvo-ResponseGrouper/blob/main/docs/database.org) before using AkvoResponseGrouper.
## Usage
1. Database Migration
Database migration is the first required step for AkvoResponseGrouper to work. Use the akvo-responsegrouper CLI to migrate all data sources with JSON configuration files to generate Materialized Views that AkvoResponseGrouper can then use.
```bash
$ akvo-responsegrouper
usage: akvo-responsegrouper [-h] [-c CONFIG] [-d]
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
akvo-responsegrouper -c <json_file_config>
-d, --drop Drop the ar_category view table
```
2. Router
To get the new endpoint provided by AkvoResponseGrouper, import the collection route to the App by:
```python
from fastapi import FastAPI
from AkvoResponseGrouper.routes import collection_route
app = FastAPI(
root_path="/",
title="Akvo Response Grouper Demo",
)
app.include_router(collection_route)
@app.get("/", tags=["Dev"])
def read_main():
return "OK"
```
3. Query
## Development
### Run Dev Containers
The dev environment contains two containers: FastAPI backend and PostGres db, to run:
```bash
docker compose up -d
```
Before go to the next step, wait until the service started at [http://localhost:5000](http://localhost:5000).
### Seed Necessary Data
In order to debug the data itself. We need to seed the example form and fake datapoints
###
```bash
docker compose exec backend python -m script.seeder_form
docker compose exec backend python -m script.seeder_datapoint <number_of_datapoint>
```
### Migration
Dev environment uses contents that is available in `Akvo-ResponseGrouper/src/AkvoResponseGrouper`. To create the Category Materialized View via CLI in dev environment:
Upgrade:
```bash
python -m AkvoResponseGrouper.cli.migrate -c './sources/category.json'
```
After upgrade, you can see "AkvoResponseGrouper - Collection" is available in API docs, ussualy [http://locahhost:5000/docs](http://localhost:5000/docs) (Depends on the root path api).
Downgrade:
```
python -m AkvoResponseGrouper.cli.migrate -c './sources/category.json'
```
### Teardown
```
docker compose down -v
```
Raw data
{
"_id": null,
"home_page": "https://github.com/akvo/Akvo-ResponseGrouper",
"name": "AkvoResponseGrouper",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8.5",
"maintainer_email": "",
"keywords": "akvo,data,helper,pypi,package",
"author": "Akvo",
"author_email": "tech.consultancy@akvo.org",
"download_url": "https://files.pythonhosted.org/packages/f9/8c/4c9849746cc51c1cd1cc68ff26205dc6286e88a653785e749c3218e70813/AkvoResponseGrouper-1.2.0.tar.gz",
"platform": null,
"description": "# Akvo-ResponseGrouper\n\n![PyPI](https://img.shields.io/pypi/v/AkvoResponseGrouper)\n[![Build Status](https://github.com/akvo/Akvo-ResponseGrouper/actions/workflows/test.yml/badge.svg)](https://github.com/akvo/Akvo-ResponseGrouper/actions) [![Repo Size](https://img.shields.io/github/repo-size/akvo/Akvo-ResponseGrouper)](https://img.shields.io/github/repo-size/akvo/Akvo-ResponseGrouper) [![Coverage Status](https://coveralls.io/repos/github/akvo/Akvo-ResponseGrouper/badge.svg?branch=main)](https://coveralls.io/github/akvo/Akvo-ResponseGrouper?branch=main) [![Languages](https://img.shields.io/github/languages/count/akvo/Akvo-ResponseGrouper\n)](https://img.shields.io/github/languages/count/akvo/Akvo-ResponseGrouper\n) [![Issues](https://img.shields.io/github/issues/akvo/Akvo-ResponseGrouper\n)](https://img.shields.io/github/issues/akvo/Akvo-ResponseGrouper\n) [![Last Commit](https://img.shields.io/github/last-commit/akvo/Akvo-ResponseGrouper/main\n)](https://img.shields.io/github/last-commit/akvo/Akvo-ResponseGrouper/main) [![Documentation Status](https://readthedocs.org/projects/Akvo-ResponseGrouper/badge/?version=latest)](https://Akvo-ResponseGrouper.readthedocs.io/en/latest/?badge=latest) [![GitHub license](https://img.shields.io/github/license/akvo/Akvo-ResponseGrouper.svg)](https://github.com/akvo/Akvo-ResponseGrouper/blob/main/LICENSE)\n\nFast-API Response catalog for pre-computed query\n\n## Install\n```\n$ pip install AkvoResponseGrouper\n```\n\n## Schema Requirements\n\nPlease follow [the required schema](https://github.com/akvo/Akvo-ResponseGrouper/blob/main/docs/database.org) before using AkvoResponseGrouper.\n\n## Usage\n\n1. Database Migration\n\nDatabase migration is the first required step for AkvoResponseGrouper to work. Use the akvo-responsegrouper CLI to migrate all data sources with JSON configuration files to generate Materialized Views that AkvoResponseGrouper can then use.\n\n```bash\n$ akvo-responsegrouper\nusage: akvo-responsegrouper [-h] [-c CONFIG] [-d]\n\noptional arguments:\n -h, --help show this help message and exit\n -c CONFIG, --config CONFIG\n akvo-responsegrouper -c <json_file_config>\n -d, --drop Drop the ar_category view table\n```\n\n2. Router\n\nTo get the new endpoint provided by AkvoResponseGrouper, import the collection route to the App by:\n\n```python\nfrom fastapi import FastAPI\nfrom AkvoResponseGrouper.routes import collection_route\n\napp = FastAPI(\n root_path=\"/\",\n title=\"Akvo Response Grouper Demo\",\n)\n\napp.include_router(collection_route)\n\n@app.get(\"/\", tags=[\"Dev\"])\ndef read_main():\n return \"OK\"\n```\n\n3. Query\n\n\n\n## Development\n\n### Run Dev Containers\n\nThe dev environment contains two containers: FastAPI backend and PostGres db, to run:\n\n```bash\ndocker compose up -d\n```\nBefore go to the next step, wait until the service started at [http://localhost:5000](http://localhost:5000).\n\n### Seed Necessary Data\n\nIn order to debug the data itself. We need to seed the example form and fake datapoints\n\n###\n```bash\ndocker compose exec backend python -m script.seeder_form\ndocker compose exec backend python -m script.seeder_datapoint <number_of_datapoint>\n```\n\n### Migration\n\nDev environment uses contents that is available in `Akvo-ResponseGrouper/src/AkvoResponseGrouper`. To create the Category Materialized View via CLI in dev environment:\n\nUpgrade:\n\n```bash\npython -m AkvoResponseGrouper.cli.migrate -c './sources/category.json'\n```\n\nAfter upgrade, you can see \"AkvoResponseGrouper - Collection\" is available in API docs, ussualy [http://locahhost:5000/docs](http://localhost:5000/docs) (Depends on the root path api).\n\nDowngrade:\n```\npython -m AkvoResponseGrouper.cli.migrate -c './sources/category.json'\n```\n\n### Teardown\n```\ndocker compose down -v\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "Fast-API Response catalog for pre-computed query",
"version": "1.2.0",
"project_urls": {
"Bug Reports": "https://github.com/akvo/Akvo-ResponseGrouper/issues",
"Documentation": "https://github.com/akvo/Akvo-ResponseGrouper",
"Homepage": "https://github.com/akvo/Akvo-ResponseGrouper",
"Source Code": "https://github.com/akvo/Akvo-ResponseGrouper"
},
"split_keywords": [
"akvo",
"data",
"helper",
"pypi",
"package"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c8e99f10364e8b22f2e9f5b2e9ca72c750b7809e1294944c7bf35bd01f41aa3d",
"md5": "3b9e67abfd93543cb59a4aab22cba1bf",
"sha256": "45fc7459a604653ad2efa659a4e23fa41817bb270b3157535cae2b92119c51d9"
},
"downloads": -1,
"filename": "AkvoResponseGrouper-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3b9e67abfd93543cb59a4aab22cba1bf",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8.5",
"size": 25982,
"upload_time": "2023-02-02T09:03:19",
"upload_time_iso_8601": "2023-02-02T09:03:19.685132Z",
"url": "https://files.pythonhosted.org/packages/c8/e9/9f10364e8b22f2e9f5b2e9ca72c750b7809e1294944c7bf35bd01f41aa3d/AkvoResponseGrouper-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f98c4c9849746cc51c1cd1cc68ff26205dc6286e88a653785e749c3218e70813",
"md5": "a42834d1d2f1987568d787896eb27da5",
"sha256": "4614032372d5e23dc7c8ebab5697ab42aa6f92c7bd743e7454350e5a5ff15747"
},
"downloads": -1,
"filename": "AkvoResponseGrouper-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "a42834d1d2f1987568d787896eb27da5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.5",
"size": 25199,
"upload_time": "2023-02-02T09:03:20",
"upload_time_iso_8601": "2023-02-02T09:03:20.907919Z",
"url": "https://files.pythonhosted.org/packages/f9/8c/4c9849746cc51c1cd1cc68ff26205dc6286e88a653785e749c3218e70813/AkvoResponseGrouper-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-02-02 09:03:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "akvo",
"github_project": "Akvo-ResponseGrouper",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "akvoresponsegrouper"
}