diff options
author | vlad <vlad@drivergrp.com> | 2016-07-16 04:09:40 -0400 |
---|---|---|
committer | vlad <vlad@drivergrp.com> | 2016-07-16 04:09:40 -0400 |
commit | 482459a63433c281b7a576236111e6a86e4521c9 (patch) | |
tree | 7b445b56b5846bda368e1864ac43d8f860341077 /src/main/scala/com/drivergrp/core/module.scala | |
parent | 980deaf70e4e0ba906d0af534aebc839015f0581 (diff) | |
download | driver-core-482459a63433c281b7a576236111e6a86e4521c9.tar.gz driver-core-482459a63433c281b7a576236111e6a86e4521c9.tar.bz2 driver-core-482459a63433c281b7a576236111e6a86e4521c9.zip |
Default implementations for easier testing + Database implicits reorganized
Diffstat (limited to 'src/main/scala/com/drivergrp/core/module.scala')
-rw-r--r-- | src/main/scala/com/drivergrp/core/module.scala | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main/scala/com/drivergrp/core/module.scala b/src/main/scala/com/drivergrp/core/module.scala new file mode 100644 index 0000000..94dd6a3 --- /dev/null +++ b/src/main/scala/com/drivergrp/core/module.scala @@ -0,0 +1,39 @@ +package com.drivergrp.core + +import akka.http.scaladsl.server.{Route, RouteConcatenation} + + +object module { + import scala.reflect.runtime.universe._ + + trait Module { + val name: String + def route: Route + def routeTypes: Seq[Type] + + def activate(): Unit = {} + def deactivate(): Unit = {} + } + + class SimpleModule(val name: String, val route: Route, routeType: Type) extends Module { + def routeTypes: Seq[Type] = Seq(routeType) + } + + /** + * Module implementation which may be used to composed a few + * + * @param name more general name of the composite module, + * must be provided as there is no good way to automatically + * generalize the name from the composed modules' names + * @param modules modules to compose into a single one + */ + class CompositeModule(val name: String, modules: Seq[Module]) + extends Module with RouteConcatenation { + + def route: Route = modules.map(_.route).reduce(_ ~ _) + def routeTypes = modules.flatMap(_.routeTypes) + + override def activate() = modules.foreach(_.activate()) + override def deactivate() = modules.reverse.foreach(_.deactivate()) + } +}
\ No newline at end of file |