Skip to content

Instantly share code, notes, and snippets.

@timcharper
Created August 21, 2015 09:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timcharper/037fb54fd788d42ad94f to your computer and use it in GitHub Desktop.
Save timcharper/037fb54fd788d42ad94f to your computer and use it in GitHub Desktop.
protected [helpers] val singleSession = databaseConnection.createSession
val noDataSource = new JdbcDataSource {
def createConnection(): Connection = throw new RuntimeException("Tried to allocate another connection in test mode. This is an issue because the test database assumes that only one database connection in used. RolledbackDatabase needs to be improved.")
def close(): Unit = ()
}
// backend.BaseSession
class DelegatingSession(session: backend.SessionDef) extends backend.SessionDef {
override def database = session.database
override def conn = session.conn
override def metaData = session.metaData
override def capabilities = session.capabilities
override def resultSetType = session.resultSetType
override def resultSetConcurrency = session.resultSetConcurrency
override def resultSetHoldability = session.resultSetHoldability
override def fetchSize = session.fetchSize
override def close() = session.close()
override def rollback() = session.rollback()
override def force() = session.force()
override def withTransaction[T](f: => T) = session.withTransaction(f)
override def asDynamicSession[T](f: => T): T = session.asDynamicSession(f)
// These are private, so they won't be called directly. But, they need to be implemented.
def endInTransaction(f: => Unit): Unit = ???
def startInTransaction: Unit = ???
}
protected object SingleConnectionDatabase extends backend.DatabaseDef(noDataSource, AsyncExecutor("single-thread", 1, 1000)) {
override def createSession(): backend.Session = {
new DelegatingSession(singleSession) {
override def close(): Unit = {
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment