diff options
Diffstat (limited to 'server/src/Main.scala')
-rw-r--r-- | server/src/Main.scala | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/server/src/Main.scala b/server/src/Main.scala index fdcabb8..9d17fa4 100644 --- a/server/src/Main.scala +++ b/server/src/Main.scala @@ -1,16 +1,39 @@ + +import io.getquill.{SnakeCase, SqliteJdbcContext} import scala.collection.mutable +import com.typesafe.config.ConfigFactory +import java.nio.file.Files + object Main extends cask.MainRoutes { - val messages = mutable.ListBuffer.empty[Message] + object ctx extends SqliteJdbcContext(SnakeCase, ConfigFactory.parseString( + // This config uses the HOCON syntax https://github.com/lightbend/config/blob/master/HOCON.md + // It is usually read from a file. + s"""{driverClassName = "org.sqlite.JDBC", jdbcUrl = "jdbc:sqlite:messages.db"}""" + )) + import ctx._ // this import allows us to construct SQL queries in a nice DSL - messages += Message("John Smith", 0, "Hello, world!") + // tables aren't typically create from within a program, but we do it here' + // for demonstration purposes + ctx.executeAction( + """ + create table if not exists message( + author string not null, + date integer not null, + content string not null + ); + """ + ) @cask.get("/") - def get() = Templates.page(messages.toList).render + def get() = { + val messages: Seq[Message] = ctx.run(ctx.query[Message]) + Templates.page(messages).render + } @cask.postJson("/") def post(message: Message) = { - messages += message + run(query[Message].insert(lift(message))) } @cask.staticResources("/assets") |