Skip to content

Instantly share code, notes, and snippets.

@hvesalai
hvesalai / ScalatraServer.scala
Created October 24, 2011 19:41 — forked from casualjim/ScalatraServer.scala
dsl proposal for embedded servers
object Main {
def main(args: Array[String]) {
MySquerylScheme.initialize()
WebServer("src/main/webapp", Config.webServerPort) { server =>
server.inContext("/api") { context =>
context.mount("validate", new ValidateApp)
context.mount("channels", new MessageChannelApp)
context.mount("streams", new StreamsApp)
@hvesalai
hvesalai / ScalatraServer.scala
Created October 25, 2011 04:12 — forked from casualjim/ScalatraServer.scala
dsl proposal for embedded servers
object Main {
def main(args: Array[String]) {
MySquerylScheme.initialize()
WebServer("src/main/webapp", Config.webServerPort) { server =>
server.inContext("/api") { context =>
context.mount("validate", new ValidateApp)
context.mount("channels", new MessageChannelApp)
context.mount("streams", new StreamsApp)
@hvesalai
hvesalai / issue.scala
Last active May 16, 2018 06:34 — forked from MarkRBM/issue.scala
monadic join issue
val sensorDatas = TableQuery[SensorDataTable]
val sensorRoomLinks = TableQuery[SensorRoomLinks]
private def sensorsForRoomsForRange(roomLinks: Seq[SensorRoomLink], from: ZonedDateTime, to: ZonedDateTime): Query[(tables.SensorRoomLinks, tables.SensorDataTable), (SensorRoomLink, UtilizationData), Seq] = {
import IdTable._
val joined = sensorDatas join sensorRoomLinks on (_.sensorId === _.sensorUid)
val filtered = joined.filter { case (data, link) => (link.roomId inSet roomLinks) && (data.sensorUid inSet sensorIds) && /* other conditions here */ }
val grouped = filtered.groupBy { case (data, link) => link.roomId }
val aggregated = grouped.map { case (roomId, rows) => roomId -> rows.map{ case (data, link) => data.value }.max }
aggregated