@@ -3,11 +3,12 @@ package akka.persistence.journal.sqlasync
33import akka .persistence .common .StoragePlugin
44import akka .persistence .journal .AsyncWriteJournal
55import akka .persistence .{AtomicWrite , PersistentRepr }
6+ import scalikejdbc ._
7+ import scalikejdbc .async ._
8+
69import scala .collection .immutable
710import scala .concurrent .Future
811import scala .util .{Success , Try }
9- import scalikejdbc ._
10- import scalikejdbc .async ._
1112
1213private [sqlasync] trait ScalikeJDBCWriteJournal extends AsyncWriteJournal with StoragePlugin {
1314 private [this ] lazy val journalTable = {
@@ -35,20 +36,24 @@ private[sqlasync] trait ScalikeJDBCWriteJournal extends AsyncWriteJournal with S
3536 }
3637
3738 log.debug(" Write messages, {}" , messages)
38- sessionProvider.localTx { implicit session =>
39- val persistenceIds = messages.map(_.persistenceId).toSet
39+ if (messages.isEmpty) {
40+ Future .successful(Nil )
41+ } else {
42+ sessionProvider.localTx { implicit session =>
43+ val persistenceIds = messages.map(_.persistenceId).toSet
4044
41- for {
42- keys <- persistenceIds.foldLeft(Future .successful(Map .empty[String , Long ])) { (acc, id) =>
43- for {
44- map <- acc
45- persistenceKey <- surrogateKeyOf(id)
46- } yield map.updated(id, persistenceKey)
47- }
48- (batch, result) = serialize(keys)
49- sql = sql " INSERT INTO $journalTable (persistence_key, sequence_nr, message) VALUES $batch"
50- _ <- logging(sql).update().future()
51- } yield result
45+ for {
46+ keys <- persistenceIds.foldLeft(Future .successful(Map .empty[String , Long ])) { (acc, id) =>
47+ for {
48+ map <- acc
49+ persistenceKey <- surrogateKeyOf(id)
50+ } yield map.updated(id, persistenceKey)
51+ }
52+ (batch, result) = serialize(keys)
53+ sql = sql " INSERT INTO $journalTable (persistence_key, sequence_nr, message) VALUES $batch"
54+ _ <- logging(sql).update().future()
55+ } yield result
56+ }
5257 }
5358 }
5459
0 commit comments