https://github.com/simonsobs/acondbs
ProductDB back-end API
https://github.com/simonsobs/acondbs
Last synced: 3 months ago
JSON representation
ProductDB back-end API
- Host: GitHub
- URL: https://github.com/simonsobs/acondbs
- Owner: simonsobs
- License: mit
- Created: 2020-02-07T21:07:46.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2023-06-28T22:08:14.000Z (almost 3 years ago)
- Last Synced: 2024-04-29T09:00:24.591Z (about 2 years ago)
- Language: Python
- Homepage:
- Size: 1.52 MB
- Stars: 0
- Watchers: 5
- Forks: 1
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://pypi.org/project/acondbs)
[](https://pypi.org/project/acondbs)
[](https://github.com/simonsobs/acondbs/actions/workflows/unit-test.yml)
[](https://github.com/simonsobs/acondbs/actions/workflows/type-check.yml)
[](https://codecov.io/gh/simonsobs/acondbs)
# Acondbs
ProductDB back-end API
## How to check out and run (for developers)
### Prepare environment
Create a virtual environment
```bash
python -m venv venv
```
Enter the virtual environment
```bash
source venv/bin/activate
```
Upgrade pip (optional)
```bash
pip install --upgrade pip
```
### Check out
Clone the repository from GitHub
```bash
git clone git@github.com:simonsobs/acondbs.git
```
Install from the clone in the [editable mode](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs).
```bash
pip install -e acondbs/[tests]
```
### Configure
Create an instance folder of Flask, where the config file and the SQLite DB file are stored. Check out an example instance folder from GitHub
```bash
git clone git@github.com:TaiSakuma/acondbs-instance-example.git instance
```
Set environmental variables
```bash
export FLASK_APP="acondbs:create_app('$PWD/instance/config.py')"
export FLASK_DEBUG=1
```
### Initialize database
```bash
flask init-db
```
An SQLite DB file has been created in the instance folder (`instance/product.sqlite3`). Tables were defined (The tables were empty. Only fields were defined. No data were inserted in the tables).
### Load sample data to DB (optional)
(Optional) Load sample data to the dababase.
```bash
flask import-csv acondbs/tests/sample/csv/
```
### Run
Run with the Flask built-in server for the development. (Deployment options for proudction are descriped in the [Flask documentation](https://flask.palletsprojects.com/en/1.1.x/deploying/).)
```bash
flask run
```
The above command starts the built-in server that only allows accress from localhost. It starts the server at the default TCP port, usually `5000`.
To allow the access from outside, use `--host=0.0.0.0` option. The TCP port can be specified by `--port` option. For example:
```bash
flask run --host=0.0.0.0 --port=5000
```
#### Access to the server with cURL
Now, you can send GraphQL requests to the server, for example, as follows.
```bash
curl -d "query={allMaps { edges { node { name mapper } } }}" localhost:5000/graphql
```
#### Access to the server with a web browser
If you access to the server with a web browser, it will show a graphical user interface *GraphiQL*:
### Unit test
Move to the repository
```bash
cd acondbs
```
Run the unit tests
```bash
pytest
```
Run the unit tests with coverage
```bash
pytest --cov
```
Generate the coverage report
```bash
coverage html
```
The report can be found at `coverage_html_report/index.html`.