Skip to content

Bio-Core/JTree

 
 

Repository files navigation

JTree

Database Access API for AMDL Results Database

View On SwaggerHub
Build Status Go Report Card

Getting started

This project requires Go to be installed. On OS X with Homebrew you can just run brew install go.

Installing this code: $ go get github.com/Bio-core/JTree

To get any missing dependencies run: $ bash go_get.sh

Running it then should be as simple as:

$ make database
$ make build
$ ./bin/jtree

To generate fake data, run $ ./bin/jtree -g=100, where 100 is the amount of dummy data requested To run on a spesific port run $ ./bin/jtree -p=8000, where 8000 is the desired port

Endpoints:

# QUERIES
# This will return all of the columns in the database
$ curl http://127.0.0.1:8000/Jtree/metadata/0.1.0/columns

# This will return all of the searchable fields in the database
$ curl http://127.0.0.1:8000/Jtree/metadata/0.1.0/searchable

# This will return all of the uneditable fields in the database
$ curl http://127.0.0.1:8000/Jtree/metadata/0.1.0/uneditable

# This is an example query that will return all data from every table in the database
$ curl http://127.0.0.1:8000/Jtree/metadata/0.1.0/query -X POST -H "content-type:application/json" /
-d '{"selected_fields":["*"],"selected_tables":["samples", "patients","experiments", "results", "resultdetails"],"selected_conditions":[[]]}'

# This is an example query that will return all data where the date of birth is greater than 1950
$ curl http://127.0.0.1:8000/Jtree/metadata/0.1.0/query -X POST -H "content-type:application/json" -d /
'{"selected_fields":["samples.sample_id", "patients.dob"],"selected_tables":["samples", "patients","experiments", "results", "resultdetails"],"selected_conditions":[["AND", "patients.dob", "Greater than", "1950"]]}'


# INSERTS and UPDATES
# Note that inserts and updates operate the same way, the only difference is that the public key is not passed with the object structure for in insert
# samples
$ curl -X POST -H "Content-Type: application/json" /
 -d '{`# See models.samples for object structure`}' 127.0.0.1:8000/Jtree/metadata/0.1.0/samples

# patients
$ curl -X POST -H "Content-Type: application/json" /
 -d '{`# See models.patients for object structure`}' 127.0.0.1:8000/Jtree/metadata/0.1.0/patients

# experiments
$ curl -X POST -H "Content-Type: application/json" /
 -d '{`# See models.experiments for object structure`}' 127.0.0.1:8000/Jtree/metadata/0.1.0/experiments

 # results
$ curl -X POST -H "Content-Type: application/json" /
 -d '{`# See models.results for object structure`}' 127.0.0.1:8000/Jtree/metadata/0.1.0/results

 # resultdetails
$ curl -X POST -H "Content-Type: application/json" /
 -d '{`# See models.resultdetails for object structure`}' 127.0.0.1:8000/Jtree/metadata/0.1.0/resultdetails

Docker

For golang code, may need to change the connection string with an updated IP address for the docker container

$ docker inspect <container name> | grep IPAddr

The base IP address for docker containers will need to be updated in the restapi/configure_jtree_metadata.go file then commit and push to master (because it does a goget) and run the docker commands below:

$ docker network create -d bridge mysql-network
$ docker run --name mysqldb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=waterloo -d --network=mysql-network mysql/mysql-server
$ docker exec -i mysqldb mysql -u root -pwaterloo -e "CREATE DATABASE JTree"
$ docker exec -i mysqldb mysql -u root -pwaterloo JTree < ./sql/jtree_backup.sql
$ docker exec -i mysqldb mysql -u root -pwaterloo -e "CREATE USER 'select'@'%' identified by 'passwords';grant SELECT on JTree.* to 'select'@'%';flush privileges;CREATE USER 'update'@'%' identified by 'passwordu';grant SELECT,INSERT, UPDATE on JTree.* to 'update'@'%';flush privileges;"
$ docker build -t docker/jtree .
$ docker run --network=mysql-network --name jtree -p 8000:8000 -d docker/jtree

About

Go Web Server

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 55.0%
  • TSQL 43.4%
  • Other 1.6%