Skip to content

Commit 799f4a9

Browse files
author
Johannes Duesing
committed
Timestamp for events is now stored in DB.
1 parent d80898c commit 799f4a9

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/daos/DatabaseInstanceDAO.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.upb.cs.swt.delphi.instanceregistry.daos
22

33
import akka.actor.ActorSystem
4+
import akka.http.scaladsl.model.DateTime
45
import akka.stream.ActorMaterializer
56
import de.upb.cs.swt.delphi.instanceregistry.io.swagger.client.model.EventEnums.EventType
67
import de.upb.cs.swt.delphi.instanceregistry.{AppLogging, Configuration, Registry}
@@ -252,9 +253,8 @@ class DatabaseInstanceDAO (configuration : Configuration) extends InstanceDAO wi
252253
if(hasInstance(id) && hasInstanceEvents(id)){
253254
val eventMapIds = eventMaps.filter(_.instanceId === id).map(_.eventId)
254255
val resultAll = Await.result(db.run(instanceEvents.filter(_.id in eventMapIds).result), Duration.Inf)
255-
val listAll = List() ++ resultAll.map(_.value)
256-
val listInstance = listAll.map(c => dataToObjectRegistryEvent(c._2, c._3))
257-
Success(listInstance)
256+
val listAll = List() ++ resultAll.map(result => dataToObjectRegistryEvent(result._2, result._3, result._4))
257+
Success(listAll)
258258
} else {
259259
log.warning(s"Cannot get events, id $id not present!")
260260
Failure(new RuntimeException(s"Cannot get events, id $id not present!"))
@@ -476,8 +476,8 @@ class DatabaseInstanceDAO (configuration : Configuration) extends InstanceDAO wi
476476
Await.result(db.run(eventMaps.filter(_.instanceId === id).exists.result), Duration.Inf)
477477
}
478478

479-
private def dataToObjectRegistryEvent(eventType: String, payload: String): RegistryEvent = {
480-
RegistryEvent.apply(getEventTypeFromString(eventType), registryEventPayloadFormat.read(payload.parseJson))
479+
private def dataToObjectRegistryEvent(eventType: String, timestamp: DateTime, payload: String): RegistryEvent = {
480+
RegistryEvent.apply(getEventTypeFromString(eventType), registryEventPayloadFormat.read(payload.parseJson), timestamp)
481481
}
482482

483483
private def removeEvents(id: Long): Unit = {

src/main/scala/de/upb/cs/swt/delphi/instanceregistry/daos/Tables.scala

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package de.upb.cs.swt.delphi.instanceregistry.daos
2-
import slick.jdbc.H2Profile.api._
2+
import java.sql.Timestamp
3+
4+
import akka.http.scaladsl.model.DateTime
5+
import slick.jdbc.MySQLProfile
6+
import slick.jdbc.MySQLProfile.api._
37
import slick.sql.SqlProfile.ColumnOption.NotNull
48

59
class Instances(tag: Tag) extends Table[(Long, String, Long, String, String, Option[String], String, String)](tag, "instances") {
@@ -24,12 +28,19 @@ class InstanceMatchingResults(tag: Tag) extends Table[(Long, Long, Boolean)](tag
2428
def * = (id, instanceId, matchingSuccessful)
2529
}
2630

27-
class InstanceEvents(tag: Tag) extends Table[(Long, String, String)](tag, "instance_events") {
31+
class InstanceEvents(tag: Tag) extends Table[(Long, String, DateTime, String)](tag, "instance_events") {
2832
def id = column[Long]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column
2933
def eventType = column[String]("eventType", O.Length(100), NotNull)
34+
def timestamp = column[DateTime]("timestamp", NotNull)
3035
def payload = column[String]("payload", O.Length(1000), NotNull)
3136

32-
def * = (id, eventType, payload)
37+
def * = (id, eventType, timestamp, payload)
38+
39+
implicit def dateTime : MySQLProfile.BaseColumnType[DateTime] =
40+
MappedColumnType.base[DateTime, Timestamp](
41+
dt => new Timestamp(dt.clicks),
42+
ts => DateTime(ts.getTime)
43+
)
3344
}
3445

3546
class EventMaps(tag: Tag) extends Table[(Long, Long, Long)](tag, "event_maps") {

0 commit comments

Comments
 (0)