Skip to content

Commit f5d528a

Browse files
committed
Storing speaker and talk updates
1 parent ae828a5 commit f5d528a

File tree

7 files changed

+66
-13
lines changed

7 files changed

+66
-13
lines changed

src/main/kotlin/no/java/moresleep/Setup.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ enum class SetupValue(val defaultValue:String) {
2020
ALLACCESS_USER(""),
2121
READ_USER(""),
2222
DO_FLYWAY_MIGRATION("true"),
23+
STORE_UPDATES("true"),
24+
2325
}
2426

2527
object Setup {

src/main/kotlin/no/java/moresleep/talk/CreateNewSession.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class CreateNewSession(val data: Map<String,DataValue>?=null,val postedBy:String
3535
}
3636

3737

38-
val dataObject = toDataObject(data)
38+
val dataObject:JsonObject = toDataObject(data)
3939

4040
val sessionId:String = id?:UUID.randomUUID().toString()
4141

@@ -58,14 +58,19 @@ class CreateNewSession(val data: Map<String,DataValue>?=null,val postedBy:String
5858
if (!speaker.id.isNullOrEmpty() && systemUser.userType != UserType.SUPERACCESS) {
5959
throw ForbiddenRequest("No id allowed on speaker")
6060
}
61-
createdSpeakers.add(speaker.addToDb(sessionId,conferenceId,if (speaker.id.isNullOrEmpty()) null else speaker.id))
61+
createdSpeakers.add(speaker.addToDb(sessionId,conferenceId,systemUser,if (speaker.id.isNullOrEmpty()) null else speaker.id))
6262
}
6363

6464
if (id != null && SessionStatus.publcStatuses.contains(sessionStatus)) {
6565
PublishTalk.doPublish(id,sessionStatus)
6666
}
6767

68-
TalkRepo.registerTalkUpdate(sessionId,conf.id,systemUser.systemId)
68+
TalkRepo.registerTalkUpdate(
69+
talkid = sessionId,
70+
conferenceid = conf.id,
71+
systemId = systemUser.systemId,
72+
payload = if (Setup.readBoolValue(SetupValue.STORE_UPDATES)) dataObject else null
73+
)
6974

7075
return ReadOneTalk().execute(systemUser, mapOf(Pair("id",sessionId)))
7176

src/main/kotlin/no/java/moresleep/talk/SpeakerRepo.kt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package no.java.moresleep.talk
22

3-
import no.java.moresleep.ServiceExecutor
4-
import no.java.moresleep.allFromQuery
5-
import no.java.moresleep.requiredString
3+
import no.java.moresleep.*
64
import org.jsonbuddy.JsonObject
75
import java.sql.ResultSet
6+
import java.time.*
87
import java.util.*
98

109
class SpeakerInDb(val id:String,val talkId: String,val name:String,val email: String,val data: JsonObject) {
@@ -53,6 +52,24 @@ object SpeakerRepo {
5352
}
5453
}
5554

55+
56+
fun registerSpeakerUpdate(id:String,talkId:String,conferenceid:String,name:String,email:String,data:JsonObject,systemId: SystemId) {
57+
ServiceExecutor.connection().preparedStatement("insert into speakerupdate(id,talkid,conferenceid,name,email,data,updatedby,updatedat) values (?,?,?,?,?,?,?,?)") {
58+
it.setString(1,id)
59+
it.setString(2,talkId)
60+
it.setString(3,conferenceid)
61+
it.setString(4,name)
62+
it.setString(5,email)
63+
it.setString(6,data.toJson())
64+
it.setString(7,systemId.name)
65+
it.setTimestamp(8, LocalDateTime.now())
66+
it.executeUpdate()
67+
}
68+
}
69+
70+
71+
72+
5673
fun deleteSpeaker(speakerid: String) {
5774
ServiceExecutor.connection().preparedStatement("delete from speaker where id = ?") {
5875
it.setString(1,speakerid)

src/main/kotlin/no/java/moresleep/talk/SpeakerUpdate.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package no.java.moresleep.talk
22

3-
import no.java.moresleep.BadRequest
3+
import no.java.moresleep.*
44
import java.util.*
55

66

@@ -9,15 +9,19 @@ class SpeakerUpdate(val id:String?=null,val name:String?=null,val email:String?=
99

1010
}
1111

12-
fun addToDb(sessionId:String,conferenceId:String,givenId:String?=null):Speaker {
12+
fun addToDb(sessionId:String,conferenceId:String,systemUser: SystemUser,givenId:String?=null):Speaker {
1313
if (this.name.isNullOrEmpty()) {
1414
throw BadRequest("Missing name in speaker")
1515
}
1616
if (this.email.isNullOrEmpty()) {
1717
throw BadRequest("Missing email in speaker")
1818
}
1919
val speakerid = givenId?:UUID.randomUUID().toString()
20-
SpeakerRepo.addSpeaker(speakerid,sessionId,conferenceId,this.name,this.email, toDataObject(this.data))
20+
val dataObject = toDataObject(this.data)
21+
SpeakerRepo.addSpeaker(speakerid,sessionId,conferenceId,this.name,this.email, dataObject)
22+
if (Setup.readBoolValue(SetupValue.STORE_UPDATES)) {
23+
SpeakerRepo.registerSpeakerUpdate(speakerid,sessionId,conferenceId,this.name,this.email,dataObject,systemUser.systemId)
24+
}
2125
return Speaker(
2226
id = speakerid,
2327
name = this.name,

src/main/kotlin/no/java/moresleep/talk/TalkRepo.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,13 @@ object TalkRepo {
139139
}
140140
}
141141

142-
fun registerTalkUpdate(talkid: String,conferenceid: String,systemId: SystemId) {
143-
ServiceExecutor.connection().preparedStatement("insert into talkupdate(talkid,conferenceid, updatedby, updatedat) values (?,?,?,?)") { statement ->
142+
fun registerTalkUpdate(talkid: String,conferenceid: String,systemId: SystemId,payload:JsonObject?) {
143+
ServiceExecutor.connection().preparedStatement("insert into talkupdate(talkid,conferenceid, updatedby, updatedat,payload) values (?,?,?,?,?)") { statement ->
144144
statement.setString(1,talkid)
145145
statement.setString(2,conferenceid)
146146
statement.setString(3,systemId.name)
147147
statement.setTimestamp(4,LocalDateTime.now())
148+
statement.setString(5,payload?.toJson())
148149
statement.executeUpdate()
149150
}
150151
}

src/main/kotlin/no/java/moresleep/talk/UpdateSession.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ class UpdateSession(val data: Map<String,DataValue>?=null,val speakers:List<Spea
2828
val newData:JsonObject = exsisting.data
2929
updateDataObject(speaker.data,newData)
3030
SpeakerRepo.updateSpeaker(speaker.id,newName,newEmail,newData)
31+
if (Setup.readBoolValue(SetupValue.STORE_UPDATES)) {
32+
SpeakerRepo.registerSpeakerUpdate(speaker.id,talkInDb.id,talkInDb.conferenceid,newName,newEmail,newData,systemUser.systemId)
33+
}
3134
} else {
32-
createdSpeakers.add(speaker.addToDb(talkInDb.id,talkInDb.conferenceid,null))
35+
createdSpeakers.add(speaker.addToDb(talkInDb.id,talkInDb.conferenceid,systemUser,null))
3336
}
3437
}
3538
for (exsisting in exsistingSpeakers) {
@@ -51,7 +54,12 @@ class UpdateSession(val data: Map<String,DataValue>?=null,val speakers:List<Spea
5154
PublishTalk.doPublish(talkInDb.id,status)
5255
}
5356

54-
TalkRepo.registerTalkUpdate(talkInDb.id,talkInDb.conferenceid,systemUser.systemId)
57+
TalkRepo.registerTalkUpdate(
58+
talkid = talkInDb.id,
59+
conferenceid = talkInDb.conferenceid,
60+
systemId = systemUser.systemId,
61+
payload = if (Setup.readBoolValue(SetupValue.STORE_UPDATES)) talkInDb.data else null
62+
)
5563

5664
return ReadOneSession().execute(systemUser,parameters)
5765
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
alter table talkupdate add payload text null;
2+
3+
create table speakerupdate(
4+
id text,
5+
talkid text,
6+
conferenceid text,
7+
name text,
8+
email text,
9+
data text,
10+
updatedby text,
11+
updatedat timestamp
12+
);
13+
14+
insert into speakerupdate(id,talkid,conferenceid,name,email,data,updatedby,updatedat)
15+
select s.id,t.id,t.conferenceid,s.email,s.email,s. data,'UNKNOWN',t.lastupdated
16+
from speaker s,talk t where s.talkid = t.id;

0 commit comments

Comments
 (0)