Skip to content

Commit 99d241e

Browse files
committed
update notification api adding support for session for web sockets
1 parent 8310ebe commit 99d241e

28 files changed

+583
-98
lines changed

api/src/main/scala/app/softnetwork/notification/api/AllNotificationsApi.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package app.softnetwork.notification.api
22

33
import akka.actor.typed.ActorSystem
4+
import app.softnetwork.api.server.ApiRoutes
45
import app.softnetwork.notification.handlers.AllNotificationsHandler
5-
import app.softnetwork.notification.launch.{NotificationApplication, NotificationRoutes}
66
import app.softnetwork.notification.model.Notification
77
import app.softnetwork.notification.persistence.query.{
88
NotificationCommandProcessorStream,
@@ -15,11 +15,11 @@ import app.softnetwork.notification.persistence.typed.{
1515
import app.softnetwork.persistence.jdbc.query.{JdbcJournalProvider, JdbcOffsetProvider}
1616
import app.softnetwork.persistence.schema.SchemaProvider
1717
import app.softnetwork.scheduler.config.SchedulerSettings
18+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
1819
import com.typesafe.config.Config
1920

20-
trait AllNotificationsApi
21-
extends NotificationApplication[Notification]
22-
with NotificationRoutes[Notification] { _: SchemaProvider =>
21+
trait AllNotificationsApi[SD <: SessionData with SessionDataDecorator[SD]]
22+
extends NotificationApi[SD, Notification] { _: ApiRoutes with SchemaProvider =>
2323

2424
override def notificationBehaviors: ActorSystem[_] => Seq[NotificationBehavior[Notification]] =
2525
_ => Seq(AllNotificationsBehavior)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package app.softnetwork.notification.api
2+
3+
import app.softnetwork.notification.model.Notification
4+
import app.softnetwork.persistence.schema.SchemaProvider
5+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
6+
7+
trait AllNotificationsRoutesApi[SD <: SessionData with SessionDataDecorator[SD]]
8+
extends AllNotificationsApi[SD]
9+
with NotificationRoutesApi[SD, Notification] { _: SchemaProvider => }

api/src/main/scala/app/softnetwork/notification/api/AllNotificationsPostgresLauncher.scala renamed to api/src/main/scala/app/softnetwork/notification/api/AllNotificationsRoutesPostgresLauncher.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package app.softnetwork.notification.api
22

3-
import akka.actor.typed.ActorSystem
4-
import app.softnetwork.api.server.ApiRoute
53
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
64
import app.softnetwork.persistence.schema.SchemaType
5+
import app.softnetwork.session.api.SessionApi
76
import org.slf4j.{Logger, LoggerFactory}
7+
import org.softnetwork.session.model.Session
88

9-
object AllNotificationsPostgresLauncher extends AllNotificationsApi with JdbcSchemaProvider {
9+
object AllNotificationsRoutesPostgresLauncher
10+
extends AllNotificationsRoutesApi[Session]
11+
with SessionApi
12+
with JdbcSchemaProvider {
1013

1114
lazy val log: Logger = LoggerFactory getLogger getClass.getName
1215

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package app.softnetwork.notification.api
22

3+
import app.softnetwork.notification.model.Notification
34
import app.softnetwork.persistence.schema.SchemaProvider
45
import app.softnetwork.scheduler.api.SchedulerEndpointsApi
56
import app.softnetwork.session.CsrfCheck
7+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
68

7-
trait AllNotificationsWithSchedulerEndpointsApi
8-
extends AllNotificationsWithSchedulerApi
9+
trait AllNotificationsWithSchedulerEndpointsApi[SD <: SessionData with SessionDataDecorator[SD]]
10+
extends AllNotificationsApi[SD]
11+
with NotificationWithSchedulerApi[SD, Notification]
912
with SchedulerEndpointsApi { _: SchemaProvider with CsrfCheck => }

api/src/main/scala/app/softnetwork/notification/api/AllNotificationsWithSchedulerEndpointsPostgresLauncher.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ package app.softnetwork.notification.api
33
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
44
import app.softnetwork.persistence.schema.SchemaType
55
import app.softnetwork.session.CsrfCheckHeader
6+
import app.softnetwork.session.api.SessionApi
67
import org.slf4j.{Logger, LoggerFactory}
8+
import org.softnetwork.session.model.Session
79

810
object AllNotificationsWithSchedulerEndpointsPostgresLauncher
9-
extends AllNotificationsWithSchedulerEndpointsApi
11+
extends AllNotificationsWithSchedulerEndpointsApi[Session]
12+
with SessionApi
1013
with JdbcSchemaProvider
1114
with CsrfCheckHeader {
1215

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package app.softnetwork.notification.api
22

3+
import app.softnetwork.notification.model.Notification
34
import app.softnetwork.persistence.schema.SchemaProvider
4-
import app.softnetwork.scheduler.api.SchedulerRoutesApi
5+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
56

6-
trait AllNotificationsWithSchedulerRoutesApi
7-
extends AllNotificationsWithSchedulerApi
8-
with SchedulerRoutesApi { _: SchemaProvider => }
7+
trait AllNotificationsWithSchedulerRoutesApi[SD <: SessionData with SessionDataDecorator[SD]]
8+
extends AllNotificationsApi[SD]
9+
with NotificationWithSchedulerRoutesApi[SD, Notification] { _: SchemaProvider => }

api/src/main/scala/app/softnetwork/notification/api/AllNotificationsWithSchedulerRoutesPostgresLauncher.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ package app.softnetwork.notification.api
22

33
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
44
import app.softnetwork.persistence.schema.SchemaType
5+
import app.softnetwork.session.api.SessionApi
56
import org.slf4j.{Logger, LoggerFactory}
7+
import org.softnetwork.session.model.Session
68

79
object AllNotificationsWithSchedulerRoutesPostgresLauncher
8-
extends AllNotificationsWithSchedulerRoutesApi
10+
extends AllNotificationsWithSchedulerRoutesApi[Session]
11+
with SessionApi
912
with JdbcSchemaProvider {
1013

1114
lazy val log: Logger = LoggerFactory getLogger getClass.getName
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package app.softnetwork.notification.api
2+
3+
import app.softnetwork.api.server.ApiRoutes
4+
import app.softnetwork.notification.launch.{NotificationApiRoutes, NotificationApplication}
5+
import app.softnetwork.notification.model.Notification
6+
import app.softnetwork.persistence.schema.SchemaProvider
7+
import app.softnetwork.session.api.SessionDataApi
8+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
9+
10+
trait NotificationApi[SD <: SessionData with SessionDataDecorator[SD], T <: Notification]
11+
extends NotificationApplication[T]
12+
with SessionDataApi[SD]
13+
with NotificationApiRoutes[SD, T] { _: ApiRoutes with SchemaProvider => }
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package app.softnetwork.notification.api
2+
3+
import akka.actor.typed.ActorSystem
4+
import app.softnetwork.notification.launch.NotificationRoutes
5+
import app.softnetwork.notification.model.Notification
6+
import app.softnetwork.notification.service.NotificationService
7+
import app.softnetwork.persistence.schema.SchemaProvider
8+
import app.softnetwork.session.CsrfCheckHeader
9+
import app.softnetwork.session.model.{SessionData, SessionDataCompanion, SessionDataDecorator}
10+
import app.softnetwork.session.service.SessionMaterials
11+
import com.softwaremill.session.{RefreshTokenStorage, SessionConfig, SessionManager}
12+
import org.softnetwork.session.model.Session
13+
14+
import scala.concurrent.ExecutionContext
15+
16+
trait NotificationRoutesApi[SD <: SessionData with SessionDataDecorator[SD], T <: Notification]
17+
extends NotificationRoutes[SD, T]
18+
with CsrfCheckHeader {
19+
self: NotificationApi[SD, T] with SchemaProvider =>
20+
override def notificationService: ActorSystem[_] => NotificationService[SD] = sys =>
21+
new NotificationService[SD] with SessionMaterials[SD] {
22+
override implicit def manager(implicit
23+
sessionConfig: SessionConfig,
24+
companion: SessionDataCompanion[SD]
25+
): SessionManager[SD] = self.manager
26+
27+
override protected def sessionType: Session.SessionType = self.sessionType
28+
29+
override implicit def sessionConfig: SessionConfig = self.sessionConfig
30+
31+
override implicit def system: ActorSystem[_] = sys
32+
33+
override lazy val ec: ExecutionContext = sys.executionContext
34+
35+
override implicit def refreshTokenStorage: RefreshTokenStorage[SD] =
36+
self.refreshTokenStorage(sys)
37+
38+
override implicit def companion: SessionDataCompanion[SD] = self.companion
39+
}
40+
}
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
package app.softnetwork.notification.api
22

33
import akka.actor.typed.ActorSystem
4-
import app.softnetwork.api.server.GrpcService
4+
import app.softnetwork.api.server.{ApiRoutes, GrpcService}
5+
import app.softnetwork.notification.model.Notification
56
import app.softnetwork.persistence.launch.PersistentEntity
67
import app.softnetwork.persistence.query.EventProcessorStream
78
import app.softnetwork.persistence.schema.SchemaProvider
89
import app.softnetwork.scheduler.api.SchedulerApi
10+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
911

10-
trait AllNotificationsWithSchedulerApi extends AllNotificationsApi with SchedulerApi {
11-
_: SchemaProvider =>
12+
trait NotificationWithSchedulerApi[SD <: SessionData with SessionDataDecorator[
13+
SD
14+
], T <: Notification]
15+
extends NotificationApi[SD, T]
16+
with SchedulerApi {
17+
_: ApiRoutes with SchemaProvider =>
1218

1319
override def entities: ActorSystem[_] => Seq[PersistentEntity[_, _, _, _]] = sys =>
14-
schedulerEntities(sys) ++ notificationEntities(sys)
20+
schedulerEntities(sys) ++ sessionEntities(sys) ++ notificationEntities(sys)
1521

1622
override def eventProcessorStreams: ActorSystem[_] => Seq[EventProcessorStream[_]] = sys =>
1723
schedulerEventProcessorStreams(sys) ++

0 commit comments

Comments
 (0)