# Routes
# This file defines all application routes (Higher priority routes first)
# https://www.playframework.com/documentation/latest/ScalaRouting
# ~~~~

# An example controller showing a sample home page
GET     /                               controllers.Default.redirect(to = "/api")

GET     /api/buildinfo                  controllers.OdinsonController.buildInfo(pretty: Option[Boolean])
GET     /api/config                     controllers.OdinsonController.configInfo(pretty: Option[Boolean])

# API spec
GET     /api                            controllers.OpenApiController.openAPI
# search
GET     /api/execute/pattern            controllers.OdinsonController.runQuery(odinsonQuery: String, parentQuery: Option[String], label: Option[String], commit: Option[Boolean], prevDoc: Option[Int], prevScore: Option[Float], enriched: Boolean = false, pretty: Option[Boolean])

POST    /api/execute/grammar            controllers.OdinsonController.executeGrammar()
#GET    /api/execute/grammar            controllers.OdinsonController.executeGrammar(grammar: String, parentQuery: Option[String], pageSize: Option[Int], allowTriggerOverlaps: Boolean, pretty: Option[Boolean])

# parent doc
GET     /api/parent/by-document-id      controllers.OdinsonController.getParentDocJsonByDocumentId(documentId: String, pretty: Option[Boolean])
GET     /api/parent/by-sentence-id      controllers.OdinsonController.getParentDocJsonBySentenceId(sentenceId: Int, pretty: Option[Boolean])

# metadata
GET     /api/metadata/by-document-id    controllers.OdinsonController.getMetadataJsonByDocumentId(documentId: String, pretty: Option[Boolean])
GET     /api/metadata/by-sentence-id    controllers.OdinsonController.getMetadataJsonBySentenceId(sentenceId: Int, pretty: Option[Boolean])

# sentence json
GET     /api/sentence                   controllers.OdinsonController.sentenceJsonForSentId(sentenceId: Int, pretty: Option[Boolean])

# counts
GET     /api/numdocs                    controllers.OdinsonController.numDocs
GET     /api/term-freq                  controllers.OdinsonController.termFreq(field: String, group: Option[String], filter: Option[String], order: Option[String], min: Option[Int], max: Option[Int], scale: Option[String], reverse: Option[Boolean], pretty: Option[Boolean])
POST    /api/rule-freq                  controllers.OdinsonController.ruleFreq()
GET     /api/term-hist                  controllers.OdinsonController.termHist(field: String, bins: Option[Int], equalProbability: Option[Boolean], xLogScale: Option[Boolean], pretty: Option[Boolean])
POST    /api/rule-hist                  controllers.OdinsonController.ruleHist()

# corpus info and statistics
GET     /api/corpus                     controllers.OdinsonController.corpusInfo(pretty: Option[Boolean])

# misc
GET     /api/dependencies-vocabulary    controllers.OdinsonController.dependenciesVocabulary(pretty: Option[Boolean])

# resources
GET     /favicon.ico                    controllers.Assets.at(file="images/favicon.ico")
GET     /assets/*file                   controllers.Assets.at(file)
