Skip to content

Commit cb83ff5

Browse files
committed
add api route
1 parent b0c0bd7 commit cb83ff5

File tree

12 files changed

+46
-30
lines changed

12 files changed

+46
-30
lines changed

build.sbt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ ThisBuild / organization := "app.softnetwork"
3030

3131
name := "generic-persistence-api"
3232

33-
ThisBuild / version := "0.3.4.1"
33+
ThisBuild / version := "0.3.5"
3434

3535
ThisBuild / scalaVersion := "2.12.11"
3636

@@ -143,6 +143,13 @@ lazy val jdbcTestkit = project.in(file("jdbc/testkit"))
143143
coreTestkit % "compile->compile;test->test;it->it"
144144
)
145145

146+
lazy val cassandra = project.in(file("cassandra"))
147+
.configs(IntegrationTest)
148+
.settings(Defaults.itSettings)
149+
.dependsOn(
150+
core % "compile->compile;test->test;it->it"
151+
)
152+
146153
lazy val counter = project.in(file("counter"))
147154
.configs(IntegrationTest)
148155
.settings(Defaults.itSettings/*, pbSettings*/)
@@ -198,6 +205,7 @@ lazy val root = project.in(file("."))
198205
coreTestkit,
199206
jdbc,
200207
jdbcTestkit,
208+
// cassandra,
201209
counter,
202210
elastic,
203211
elasticTestkit,

server/src/main/scala/app/softnetwork/api/server/ApiEndpoint.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,22 @@ import sttp.tapir.server.akkahttp.AkkaHttpServerInterpreter
1111
import scala.concurrent.{ExecutionContext, Future}
1212
import scala.language.implicitConversions
1313

14-
trait ApiEndpoint extends SwaggerApiEndpoint {
14+
trait ApiEndpoint extends ApiRoute with SwaggerApiEndpoint {
1515

1616
import ApiEndpoint._
1717

18+
implicit def ec: ExecutionContext
19+
1820
def endpoints: List[ServerEndpoint[AkkaStreams with WebSockets, Future]]
1921

2022
def swaggerEndpoints: List[ServerEndpoint[AkkaStreams with WebSockets, Future]] =
2123
endpointsToSwaggerEndpoints(endpoints)
2224

23-
def swaggerRoute(implicit ec: ExecutionContext): Route = swaggerEndpoints
25+
def swaggerRoute: Route = swaggerEndpoints
26+
27+
def apiRoute: Route = endpoints
2428

25-
def apiRoute(implicit ec: ExecutionContext): Route = endpoints
29+
override def route: Route = apiRoute ~ swaggerRoute
2630

2731
implicit def formats: Formats = commonFormats
2832

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
package app.softnetwork.api.server
22

33
import akka.actor.typed.ActorSystem
4-
import akka.http.scaladsl.server.Route
5-
6-
import scala.concurrent.ExecutionContext
74

85
trait ApiEndpoints extends ApiRoutes {
96

107
def endpoints: ActorSystem[_] => List[ApiEndpoint]
118

12-
override def apiRoutes(system: ActorSystem[_]): Route = {
13-
implicit def ec: ExecutionContext = system.executionContext
14-
concat(endpoints(system).map(api => api.apiRoute ~ api.swaggerRoute): _*)
15-
}
16-
9+
final override def apiRoutes: ActorSystem[_] => List[ApiRoute] = endpoints
1710
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package app.softnetwork.api.server
2+
3+
import akka.http.scaladsl.server.{Route, RouteConcatenation}
4+
5+
trait ApiRoute extends RouteConcatenation {
6+
7+
def route: Route
8+
9+
}

server/src/main/scala/app/softnetwork/api/server/ApiRoutes.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ trait ApiRoutes extends Directives with GrpcServices with DefaultComplete {
3939
pathPrefix(config.ServerSettings.RootPath) {
4040
Try(
4141
respondWithHeaders(RawHeader("Api-Version", applicationVersion)) {
42-
HealthCheckService.route ~ apiRoutes(system)
42+
concat((HealthCheckService :: apiRoutes(system)).map(_.route): _*)
4343
}
4444
) match {
4545
case Success(s) => s
@@ -57,5 +57,6 @@ trait ApiRoutes extends Directives with GrpcServices with DefaultComplete {
5757
} ~ grpcRoutes(system)
5858
}
5959

60-
def apiRoutes(system: ActorSystem[_]): Route
60+
def apiRoutes: ActorSystem[_] => List[ApiRoute]
61+
6162
}

server/src/main/scala/app/softnetwork/api/server/HealthCheckService.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.json4s.Formats
99
* actual checking of the service's internal state, verifying needed actors are still alive, and so
1010
* on.
1111
*/
12-
object HealthCheckService extends Directives with DefaultComplete {
12+
object HealthCheckService extends Directives with DefaultComplete with ApiRoute {
1313

1414
implicit def formats: Formats = commonFormats
1515

server/src/main/scala/app/softnetwork/api/server/launch/HealthCheckApplication.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,4 @@ import akka.http.scaladsl.server.Route
66
import app.softnetwork.api.server.ApiRoutes
77
import app.softnetwork.persistence.schema.SchemaProvider
88

9-
trait HealthCheckApplication extends Application with ApiRoutes { _: SchemaProvider =>
10-
override def apiRoutes(system: ActorSystem[_]): Route = complete(StatusCodes.NotFound)
11-
}
9+
trait HealthCheckApplication extends Application with ApiRoutes { _: SchemaProvider => }

server/testkit/src/main/scala/app/softnetwork/persistence/person/PersonServerTestKit.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import akka.actor.typed.ActorSystem
55
import akka.http.scaladsl.model.StatusCodes
66
import akka.http.scaladsl.server.Route
77
import akka.http.scaladsl.testkit.PersistenceScalatestRouteTest
8-
import app.softnetwork.api.server.ApiRoutes
8+
import app.softnetwork.api.server.{ApiRoute, ApiRoutes}
99
import app.softnetwork.api.server.config.ServerSettings.RootPath
1010
import app.softnetwork.persistence.launch.{PersistenceGuardian, PersistentEntity}
1111
import app.softnetwork.persistence.person.message._
@@ -46,7 +46,11 @@ trait PersonServerTestKit
4646
person2ExternalProcessorStream(sys)
4747
)
4848

49-
override def apiRoutes(system: ActorSystem[_]): Route = PersonService(system).route
49+
override def apiRoutes: ActorSystem[_] => List[ApiRoute] =
50+
system =>
51+
List(
52+
PersonService(system)
53+
)
5054

5155
val birthday = "26/12/1972"
5256

server/testkit/src/main/scala/app/softnetwork/persistence/person/PersonService.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package app.softnetwork.persistence.person
22

33
import akka.actor.typed.ActorSystem
4-
import akka.http.scaladsl.server.Route
54
import app.softnetwork.api.server.ApiEndpoint
65
import app.softnetwork.persistence.generateUUID
76
import app.softnetwork.persistence.person.message._
@@ -91,7 +90,6 @@ trait PersonService
9190
deletePersonEndpoint
9291
)
9392

94-
lazy val route: Route = apiRoute
9593
}
9694

9795
object PersonService {

session/testkit/src/main/scala/app/softnetwork/session/scalatest/SessionEndpointsRoute.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package app.softnetwork.session.scalatest
22

33
import akka.actor.typed.ActorSystem
4-
import akka.http.scaladsl.server.{Route, RouteConcatenation}
54
import app.softnetwork.api.server.ApiEndpoint
65
import app.softnetwork.session.service._
76
import com.softwaremill.session.{SessionEndpoints => _, _}
@@ -14,7 +13,7 @@ import sttp.tapir.server.ServerEndpoint
1413

1514
import scala.concurrent.{ExecutionContext, Future}
1615

17-
trait SessionEndpointsRoute extends TapirEndpoints with ApiEndpoint with RouteConcatenation {
16+
trait SessionEndpointsRoute extends TapirEndpoints with ApiEndpoint {
1817

1918
import Session._
2019

@@ -80,7 +79,6 @@ trait SessionEndpointsRoute extends TapirEndpoints with ApiEndpoint with RouteCo
8079
override def endpoints: List[ServerEndpoint[Any, Future]] =
8180
List(retrieveSessionEndpoint, invalidateSessionEndpoint, createSessionEndpoint)
8281

83-
lazy val route: Route = apiRoute ~ swaggerRoute
8482
}
8583

8684
object SessionEndpointsRoute {

0 commit comments

Comments
 (0)