@@ -8,14 +8,6 @@ import scalasql.core.DialectConfig
8
8
*/
9
9
trait DbClient {
10
10
11
- /**
12
- * Adds a listener to be notified of transaction events.
13
- *
14
- * Listeners added on DbClient are automatically added to all transactions created by this
15
- * DbClient.
16
- */
17
- def addTransactionListener (listener : DbApi .TransactionListener ): Unit
18
-
19
11
/**
20
12
* Converts the given query [[Q ]] into a string. Useful for debugging and logging
21
13
*/
@@ -69,17 +61,10 @@ object DbClient {
69
61
connection : java.sql.Connection ,
70
62
config : Config = new Config {},
71
63
/** Listeners that are added to all transactions created by this connection */
72
- defaultListeners : Iterable [DbApi .TransactionListener ] = Seq .empty
64
+ listeners : Seq [DbApi .TransactionListener ] = Seq .empty
73
65
)(implicit dialect : DialectConfig )
74
66
extends DbClient {
75
67
76
- val listeners =
77
- collection.mutable.ArrayDeque .empty[DbApi .TransactionListener ].addAll(defaultListeners)
78
-
79
- override def addTransactionListener (listener : DbApi .TransactionListener ): Unit = {
80
- listeners.append(listener)
81
- }
82
-
83
68
def renderSql [Q , R ](query : Q , castParams : Boolean = false )(
84
69
implicit qr : Queryable [Q , R ]
85
70
): String = {
@@ -130,15 +115,13 @@ object DbClient {
130
115
dataSource : javax.sql.DataSource ,
131
116
config : Config = new Config {},
132
117
/** Listeners that are added to all transactions created through the [[DataSource ]] */
133
- defaultListeners : Iterable [DbApi .TransactionListener ] = Seq .empty
118
+ listeners : Seq [DbApi .TransactionListener ] = Seq .empty
134
119
)(implicit dialect : DialectConfig )
135
120
extends DbClient {
136
121
137
- val listeners =
138
- collection.mutable.ArrayDeque .empty[DbApi .TransactionListener ].addAll(defaultListeners)
139
-
140
- override def addTransactionListener (listener : DbApi .TransactionListener ): Unit = {
141
- listeners.append(listener)
122
+ /** Returns a new [[DataSource ]] with the given listener added */
123
+ def withTransactionListener (listener : DbApi .TransactionListener ): DbClient = {
124
+ new DataSource (dataSource, config, listeners :+ listener)
142
125
}
143
126
144
127
def renderSql [Q , R ](query : Q , castParams : Boolean = false )(
0 commit comments