Skip to content

akvo/Akvo-ResponseGrouper

Repository files navigation

Akvo-ResponseGrouper

PyPI Build Status Repo Size Coverage Status Languages Issues Last Commit Documentation Status GitHub license

Fast-API Response catalog for pre-computed query

Install

$ pip install AkvoResponseGrouper

Schema Requirements

Please follow the required schema 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.

$ 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
  1. Router

To get the new endpoint provided by AkvoResponseGrouper, import the collection route to the App by:

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"
  1. Query

Development

Run Dev Containers

The dev environment contains two containers: FastAPI backend and PostGres db, to run:

docker compose up -d

Before go to the next step, wait until the service started at http://localhost:5000.

Seed Necessary Data

In order to debug the data itself. We need to seed the example form and fake datapoints

docker compose exec backend python -m scripts.seeder_form
docker compose exec backend python -m scripts.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:

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 (Depends on the root path api).

Downgrade:

python -m AkvoResponseGrouper.cli.migrate -c './sources/category.json'

Teardown

docker compose down -v