# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

GET     /                           controllers.Application.redirectToWeb
GET     /web                        controllers.Application.redirectToWeb
GET     /web/                        controllers.Application.showWeb
GET     /web/assets/*file               controllers.Assets.at(path="/public", file)

### During development, use enginebase controller instead to avoid cache problems
# TODO: remove these new routes when work on PDIO-235
GET     /web/enginebase/*file               controllers.Assets.at(path="/enginebase", file)
# GET     /web/enginebase/*file                controllers.Application.enginebase(file)

# TODO: use these new routes when work on PDIO-235
#GET    /engineinfos/:engineinfoid/:filename   controllers.engineinfo.getFile(engineinfoid, filename)
#GET    /algoinfos/:algoinfoid/:filename       controllers.algoinfo.getFile(algoinfoid, filename)


POST    /signin                        controllers.Application.signin
POST    /signout                       controllers.Application.signout

# Admin User
GET     /auth                          controllers.Application.getAuth

# An App
GET     /apps                          controllers.Application.getApplist
GET     /apps/:id                      controllers.Application.getApp(id: Int)
POST    /apps                          controllers.Application.createApp
DELETE  /apps/:id                      controllers.Application.removeApp(id: Int)
#PUT    /apps/:id                      controllers.Application.updateApp(id: Int)
GET     /apps/:id/details              controllers.Application.getAppDetails(id: Int)
POST    /apps/:id/erase_data           controllers.Application.eraseAppData(id: Int)

# System Level
GET     /engineinfos                   controllers.Application.getEngineInfoList
GET     /engineinfos/:id/algoinfos     controllers.Application.getEngineInfoAlgoInfoList(id: String)
GET     /engineinfos/:id/metricinfos   controllers.Application.getEngineInfoMetricInfoList(id: String)
GET     /engineinfos/:id/splitterinfos controllers.Application.getEngineInfoSplitterInfoList(id: String)

# An Engine of an App
GET     /apps/:appid/engines          controllers.Application.getAppEnginelist(appid: Int)
GET     /apps/:appid/engines/:id      controllers.Application.getEngine(appid: Int, id: Int)
POST    /apps/:appid/engines          controllers.Application.createEngine(appid: Int)
DELETE  /apps/:appid/engines/:id      controllers.Application.removeEngine(appid: Int, id: Int)

GET     /apps/:appid/engines/:engineid/algos_available      controllers.Application.getAvailableAlgoList(appid: Int, engineid: Int)
GET     /apps/:appid/engines/:engineid/algos_available/:id  controllers.Application.getAvailableAlgo(appid: Int, engineid: Int, id: Int)
POST    /apps/:appid/engines/:engineid/algos_available      controllers.Application.createAvailableAlgo(appid: Int, engineid: Int)
DELETE  /apps/:appid/engines/:engineid/algos_available/:id  controllers.Application.removeAvailableAlgo(appid: Int, engineid: Int, id: Int)

GET     /apps/:appid/engines/:engineid/algos_deployed       controllers.Application.getDeployedAlgoList(appid: Int, engineid: Int)
POST    /apps/:appid/engines/:engineid/algos_deploy         controllers.Application.algoDeploy(appid: Int, engineid: Int)
POST    /apps/:appid/engines/:engineid/algos_undeploy       controllers.Application.algoUndeploy(appid: Int, engineid: Int)
POST    /apps/:appid/engines/:engineid/algos_trainnow       controllers.Application.algoTrainNow(appid: Int, engineid: Int)

GET     /apps/:appid/engines/:engineid/simevals             controllers.Application.getSimEvalList(appid: Int, engineid: Int)
POST    /apps/:appid/engines/:engineid/simevals             controllers.Application.createSimEval(appid: Int, engineid: Int)
DELETE  /apps/:appid/engines/:engineid/simevals/:id         controllers.Application.removeSimEval(appid: Int, engineid: Int, id: Int)
GET     /apps/:appid/engines/:engineid/simevals/:id/report  controllers.Application.getSimEvalReport(appid: Int, engineid: Int, id: Int)

GET     /apps/:appid/engines/:engineid/algos_available/:algoid/autotune_report   controllers.Application.getAlgoAutotuningReport(appid: Int, engineid: Int, algoid: Int)
POST    /apps/:appid/engines/:engineid/algos_available/:algoid/autotune_apply    controllers.Application.algoAutotuningSelect(appid: Int, engineid: Int, algoid: Int)

# Engine Module
GET     /apps/:appid/engine_settings/:engineid         controllers.Application.getEngineSettings(appid: Int, engineid: Int)
PUT     /apps/:appid/engine_settings/:engineid         controllers.Application.updateEngineSettings(appid: Int, engineid: Int)

GET     /apps/:appid/engines/:engineid/template.html   controllers.Application.getEngineTemplateHtml(appid: Int, engineid: Int)
GET     /apps/:appid/engines/:engineid/template.js     controllers.Application.getEngineTemplateJs(appid: Int, engineid: Int)

# Algo Module
GET     /apps/:appid/engines/:engineid/algo_settings/:algoid    controllers.Application.getAlgoSettings(appid: Int, engineid: Int, algoid: Int)
PUT     /apps/:appid/engines/:engineid/algo_settings/:algoid    controllers.Application.updateAlgoSettings(appid: Int, engineid: Int, algoid: Int)

GET     /apps/:appid/engines/:engineid/algos/:algoid/template.html   controllers.Application.getAlgoTemplateHtml(appid: Int, engineid: Int, algoid: Int)
GET     /apps/:appid/engines/:engineid/algos/:algoid/template.js     controllers.Application.getAlgoTemplateJs(appid: Int, engineid: Int, algoid: Int)

# Metric Info template
GET     /engineinfos/:engineinfoid/metricinfos/:metricinfoid/template.html    controllers.Application.getMetricInfoTemplateHtml(engineinfoid: String, metricinfoid: String)
GET     /engineinfos/:engineinfoid/splitterinfos/:splitterinfoid/template.html    controllers.Application.getSplitterInfoTemplateHtml(engineinfoid: String, splitterinfoid: String)

