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

# General
GET  /                                 hydro.controllers.StandardActions.index
GET  /manualtests/                     app.controllers.Application.manualTests
GET  /app/                             hydro.controllers.StandardActions.reactAppRoot
GET  /app/*anyString                   hydro.controllers.StandardActions.reactApp(anyString)
GET  /appwithoutcreds/                 hydro.controllers.StandardActions.reactAppWithoutCredentials

# Javscript files
GET  /localDatabaseWebWorker.js        hydro.controllers.JavascriptFiles.localDatabaseWebWorker
GET  /serviceWorker.js                 hydro.controllers.JavascriptFiles.serviceWorker

# Internal API
POST /scalajsapi/*path                 hydro.controllers.InternalApi.scalaJsApiPost(path: String)
GET  /scalajsapi/*path                 hydro.controllers.InternalApi.scalaJsApiGet(path: String)
GET  /websocket/scalajsapi/            hydro.controllers.InternalApi.scalaJsApiWebsocket
GET  /websocket/hydropush/:updateToken/  hydro.controllers.InternalApi.hydroPushSocketWebsocket(updateToken)

# External API (standard actions)
GET  /externalapi/healthcheck/         hydro.controllers.StandardActions.healthCheck
GET  /externalapi/dbschema/:appSecret/  hydro.controllers.StandardActions.databaseSchema(appSecret)
GET  /externalapi/clearoldentitymodifications/:dryOrWet/:appSecret/  hydro.controllers.StandardActions.clearOldEntityModifications(dryOrWet, appSecret)

# External API (read-only actions)
GET  /externalapi/acc/reservoirs/list/:appSecret/  app.controllers.ExternalApi.listReservoirs(appSecret)
GET  /externalapi/acc/trans/search/:searchString/:appSecret/  app.controllers.ExternalApi.searchTransactions(searchString, appSecret)

# External API (mutating actions)
GET  /externalapi/acc/trans/addfromtpl/:tplCode/:appSecret/  app.controllers.ExternalApi.addTransactionFromTemplate(tplCode, appSecret)
POST /externalapi/acc/trans/add/:appSecret/  app.controllers.ExternalApi.addTransaction(appSecret)
DELETE /externalapi/acc/trans/:transactionGroupId/:appSecret/  app.controllers.ExternalApi.deleteTransaction(appSecret, transactionGroupId: Long)
GET  /externalapi/acc/money/xchgmeasurement/:date/:currency/:ratio/:appSecret/  app.controllers.ExternalApi.addExchangeRateMeasurement(date, currency, ratio: Double, appSecret)
GET  /externalapi/acc/refactor/changecategory/:searchString/:newCategory/:dryOrWet/:appSecret/  app.controllers.ExternalApi.refactorTransactionCategory(searchString, newCategory, dryOrWet, appSecret)
GET  /externalapi/acc/refactor/addtag/:searchString/:tagToAdd/:dryOrWet/:appSecret/  app.controllers.ExternalApi.addTagRefactor(searchString, tagToAdd, dryOrWet, appSecret)

# Auth
GET  /login/                           hydro.controllers.Auth.login(returnTo ?= "/")
POST /login/                           hydro.controllers.Auth.authenticate(returnTo ?= "/")
GET  /logout/                          hydro.controllers.Auth.logout
GET  /loggedin/                        hydro.controllers.Auth.amILoggedIn

# Map static resources from the /public folder to the /assets URL path
GET  /assets/*file                     controllers.Assets.versioned(path="/public", file: Asset)
