2013-05-13 19:58:53 +05:30
|
|
|
package net.abhinavsarkar.ircsearch.model
|
|
|
|
|
|
|
|
|
2013-05-18 06:42:15 +05:30
|
|
|
object ChatLine {
|
|
|
|
val USER = "user"
|
|
|
|
val TS = "ts"
|
|
|
|
val MSG = "msg"
|
2013-05-19 23:37:00 +05:30
|
|
|
val CTXB = "ctxb"
|
|
|
|
val CTXA = "ctxa"
|
2013-05-18 06:42:15 +05:30
|
|
|
}
|
|
|
|
|
2013-05-19 23:37:00 +05:30
|
|
|
case class ChatLine(user : String, timestamp : Long, message : String,
|
|
|
|
contextBefore : List[ChatLine] = List(),
|
|
|
|
contextAfter : List[ChatLine] = List())
|
2013-05-13 19:58:53 +05:30
|
|
|
|
|
|
|
case class IndexRequest(
|
|
|
|
server : String, channel : String, botName : String, chatLines : List[ChatLine])
|
|
|
|
|
|
|
|
case class SearchRequest(
|
|
|
|
server : String, channel : String, botName : String, query: String,
|
2013-05-20 00:37:23 +05:30
|
|
|
page : Int = 0, pageSize : Int = 10, details : Boolean = false)
|
2013-05-13 19:58:53 +05:30
|
|
|
|
|
|
|
case class SearchResult(
|
|
|
|
server : String, channel : String, botName : String, query: String,
|
2013-05-20 00:37:23 +05:30
|
|
|
page : Int, pageSize : Int, totalResults : Int, chatLines : List[ChatLine]) {
|
|
|
|
def toSimpleSearchResult =
|
|
|
|
SimpleSearchResult(server, channel, botName, query, page, pageSize, totalResults,
|
|
|
|
chatLines map {
|
|
|
|
case mline@ChatLine(_, _, _, contextBefore, contextAfter) =>
|
|
|
|
((contextBefore :+ mline) ++ contextAfter) map { line =>
|
|
|
|
List(line.timestamp.toString, line.user, line.message)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
2013-05-13 19:58:53 +05:30
|
|
|
|
|
|
|
object SearchResult {
|
|
|
|
def fromSearchRequest(searchRequest : SearchRequest) = searchRequest match {
|
2013-05-20 00:37:23 +05:30
|
|
|
case SearchRequest(server, channel, botName, query, page, pageSize, _) =>
|
2013-05-13 19:58:53 +05:30
|
|
|
new SearchResult(server, channel, botName, query, page, pageSize, 0, List())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-05-20 00:37:23 +05:30
|
|
|
case class SimpleSearchResult(
|
|
|
|
server : String, channel : String, botName : String, query: String,
|
|
|
|
page : Int, pageSize : Int, totalResults : Int, lines : List[List[List[String]]])
|