aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/byspel/app/modules.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/byspel/app/modules.scala')
-rw-r--r--src/main/scala/byspel/app/modules.scala51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/main/scala/byspel/app/modules.scala b/src/main/scala/byspel/app/modules.scala
new file mode 100644
index 0000000..a4b85ae
--- /dev/null
+++ b/src/main/scala/byspel/app/modules.scala
@@ -0,0 +1,51 @@
+package byspel
+package app
+
+import akka.http.scaladsl.Http
+import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
+import akka.http.scaladsl.server.{Directives, Route}
+import spray.json.DefaultJsonProtocol
+import scala.concurrent.Await
+import scala.concurrent.duration._
+
+trait HttpApi
+ extends Directives
+ with SprayJsonSupport
+ with DefaultJsonProtocol {
+ def route: Route
+}
+
+trait HttpApp extends App { self: HttpApi =>
+
+ override def start() = {
+ super.start()
+ log("binding to interface")
+ val future =
+ Http().bindAndHandle(route, config.http.address, config.http.port)
+ Await.result(future, 2.seconds)
+ }
+
+}
+
+trait DatabaseApi extends Tables {
+ val profile = Tables.profile
+ import profile.api._
+
+ def database: Database
+
+}
+
+trait DatabaseApp extends App { self: DatabaseApi =>
+ import profile.api.Database
+
+ lazy val database: Database = Database.forURL(
+ s"jdbc:sqlite:${config.database.file}",
+ driver = "org.sqlite.JDBC"
+ )
+
+ override def start() = {
+ super.start()
+ log("initializing database")
+ database
+ }
+}