Skip to content

Commit 3c860e4

Browse files
committed
prepare release v0.7.0
1 parent e027057 commit 3c860e4

File tree

4 files changed

+55
-7
lines changed

4 files changed

+55
-7
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ ThisBuild / organization := "app.softnetwork"
22

33
name := "resource"
44

5-
ThisBuild / version := "0.6.0"
5+
ThisBuild / version := "0.7.0"
66

77
ThisBuild / scalaVersion := "2.12.18"
88

common/src/main/protobuf/message/resource.proto

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ option (scalapb.options) = {
1313
import: "app.softnetwork.serialization._"
1414
import: "app.softnetwork.resource.model._"
1515
preamble: "trait ResourceEvent extends CrudEvent"
16+
preamble: "trait SessionResourceEvent extends ResourceEvent{ def uuid: String; def sessionId: String }"
1617
preserve_unknown_fields: false
1718
};
1819

@@ -23,18 +24,39 @@ message ResourceCreatedEvent {
2324
required app.softnetwork.resource.model.Resource document = 1;
2425
}
2526

27+
message SessionResourceCreatedEvent {
28+
option (scalapb.message).extends = "ProtobufEvent";
29+
option (scalapb.message).extends = "SessionResourceEvent";
30+
required string uuid = 1;
31+
required string sessionId = 2;
32+
optional string uri = 3;
33+
}
34+
2635
message ResourceUpdatedEvent {
2736
option (scalapb.message).extends = "ProtobufEvent";
2837
option (scalapb.message).extends = "Updated[Resource]";
2938
option (scalapb.message).extends = "ResourceEvent";
3039
required app.softnetwork.resource.model.Resource document = 1;
3140
}
3241

42+
message SessionResourceUpdatedEvent {
43+
option (scalapb.message).extends = "ProtobufEvent";
44+
option (scalapb.message).extends = "SessionResourceEvent";
45+
required string uuid = 1;
46+
required string sessionId = 2;
47+
optional string uri = 3;
48+
}
49+
3350
message ResourceDeletedEvent {
3451
option (scalapb.message).extends = "ProtobufEvent";
3552
option (scalapb.message).extends = "Deleted";
3653
option (scalapb.message).extends = "ResourceEvent";
3754
required string uuid = 1;
3855
}
3956

40-
57+
message SessionResourceDeletedEvent {
58+
option (scalapb.message).extends = "ProtobufEvent";
59+
option (scalapb.message).extends = "SessionResourceEvent";
60+
required string uuid = 1;
61+
required string sessionId = 2;
62+
}

core/src/main/scala/app/softnetwork/resource/persistence/typed/ResourceBehavior.scala

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,20 @@ sealed trait ResourceBehavior
4242
*/
4343
override protected def tagEvent(entityId: String, event: ResourceEvent): Set[String] = {
4444
event match {
45+
case _: SessionResourceEvent =>
46+
Set(
47+
s"${persistenceId.toLowerCase}-to-session"
48+
)
4549
case _ =>
4650
Set(
4751
persistenceId,
4852
s"${persistenceId.toLowerCase}-to-localfilesystem",
4953
s"${persistenceId.toLowerCase}-to-s3",
50-
s"${persistenceId.toLowerCase}-to-gcs"
54+
s"${persistenceId.toLowerCase}-to-gcs",
55+
s"${persistenceId.toLowerCase}-to-azure",
56+
s"${persistenceId.toLowerCase}-to-minio",
57+
s"${persistenceId.toLowerCase}-to-db", // database storage (Cassandra, Postgres, MySQL...)
58+
s"${persistenceId.toLowerCase}-to-redis" // redis storage
5159
)
5260
}
5361
}
@@ -77,13 +85,20 @@ sealed trait ResourceBehavior
7785
case cmd: CreateResource =>
7886
import cmd._
7987
val createdDate = Instant.now()
88+
val sessionId = if (uuid.contains('#')) uuid.split('#').headOption else None
89+
val sessionEvent = sessionId.map(sid =>
90+
SessionResourceCreatedEvent.defaultInstance
91+
.withUuid(uuid)
92+
.withSessionId(sid)
93+
.copy(uri = uri)
94+
)
8095
Effect
8196
.persist(
8297
ResourceCreatedEvent(
8398
asResource(uuid, bytes, uri)
8499
.withCreatedDate(createdDate)
85100
.withLastUpdated(createdDate)
86-
)
101+
) +: sessionEvent.toList
87102
)
88103
.thenRun(_ => { ResourceCreated ~> replyTo })
89104

@@ -96,13 +111,20 @@ sealed trait ResourceBehavior
96111
case None => Instant.now()
97112
}
98113
}
114+
val sessionId = if (uuid.contains('#')) uuid.split('#').headOption else None
115+
val sessionEvent = sessionId.map(sid =>
116+
SessionResourceUpdatedEvent.defaultInstance
117+
.withUuid(uuid)
118+
.withSessionId(sid)
119+
.copy(uri = uri)
120+
)
99121
Effect
100122
.persist(
101123
ResourceUpdatedEvent(
102124
asResource(uuid, bytes, uri)
103125
.withCreatedDate(createdDate)
104126
.withLastUpdated(lastUpdated)
105-
)
127+
) +: sessionEvent.toList
106128
)
107129
.thenRun(_ => { ResourceUpdated ~> replyTo })
108130

@@ -120,11 +142,15 @@ sealed trait ResourceBehavior
120142
case Some(uri) => s"$uri/$entityId"
121143
case _ => entityId
122144
}
145+
val sessionId = if (uuid.contains('#')) uuid.split('#').headOption else None
146+
val sessionEvent = sessionId.map(sid =>
147+
SessionResourceDeletedEvent.defaultInstance.withUuid(uuid).withSessionId(sid)
148+
)
123149
Effect
124150
.persist[ResourceEvent, Option[Resource]](
125151
ResourceDeletedEvent(
126152
uuid
127-
)
153+
) +: sessionEvent.toList
128154
)
129155
.thenRun(_ => {
130156
ResourceDeleted ~> replyTo

project/Versions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
object Versions {
22

3-
val genericPersistence = "0.7.1"
3+
val genericPersistence = "0.7.3"
44

55
val scalatest = "3.2.16"
66
}

0 commit comments

Comments
 (0)