FluMapModel/api_service
..
.idea/runConfigurations
docker_scripts
docs
docs_src
migrations
scripts
seattle_flu_incidence_mapper
tests
.dockerignore
AUTHORS.rst
CONTRIBUTING.rst
DEVELOPMENT_TIPS.rst
Dockerfile
Dockerfile.builder
HISTORY.rst
Makefile
README.rst
dev_run.sh
docker-compose.yml
requirements_dev.txt
setup.py
windows_env.ps1

README.rst

Seattle Flu Incidence Mapper API
================================

Seattle Flu Incidence Mapper API service hosts and API that can be used to host models generated using the incidence_mapper
R packages. These packages must best uploaded to the API server using the upload_models.py script


Architecture
------------

The API service is structured as 2 sets of docker images. The main image is the sflu-api which runs the API and
orchestrates the worker packages. The worker container use the sfim-worker image. The sflu-api is used to create the
service container.

The API service store model meta-information using a Postgres Database.

When a request is made to the /query API, the corresponding model is found in the database. If found, the service
container will then check is a copy of the selected model is already loaded into a running container. If not, service
container will create a new worker container using the sflu-worker image and then pass the request on to the model.


Development
===========

You will first need to build the docker image. To do this, ensure docker is installed. Then run the following commands
```
docker-compose build
```

You can now run the server using
```
docker-compose up
```

You should should always stop the containers completely and remove for proper development environment behaviour using
```
docker-compose down
```


Known Issues
------------
The container currently will create some root folders in development mode. This will be resolved in the next release

Performing Migrations
---------------------

docker-compose run service flask migrate

SQLALCHEMY_DATABASE_URI=postgres+psycopg2://seattle_flu:seattle_flu@db MODEL_STORE=/home/clinton/development/work/incidence-mapper/api_service/dbconversion/model_store FLASK_APP=seattle_flu_incidence_mapper.app:app flask db --help