diff -r 641c7190c566 -r 94ed9cfdb123 src/main/scala/fis/db/SquerylTxMgr.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/scala/fis/db/SquerylTxMgr.scala Mon Apr 02 00:48:43 2012 +0200 @@ -0,0 +1,58 @@ +/* + * Copyright 2012 Tomas Zeman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fis.db + +import java.sql.{Connection, DriverManager} +import net.liftweb.common._ +import net.liftweb.http._ +import net.liftweb.squerylrecord.SquerylRecord +import net.liftweb.squerylrecord.RecordTypeMode._ +import net.liftweb.util._ +import org.squeryl.{Session, SessionFactory} +import org.squeryl.adapters.PostgreSqlAdapter + +object SquerylTxMgr extends Loggable { + def init(): Unit = { + for { + dri <- Props.get("db.fis.driver") + url <- Props.get("db.fis.url") + } yield { + Class.forName(dri) + SquerylRecord.initWithSquerylSession { + val con:Connection = (for { + u <- Props.get("db.fis.user") + p <- Props.get("db.fis.pass") + } yield { + DriverManager.getConnection(url, u, p) + }) openOr { DriverManager.getConnection(url) } + val s = Session.create(con, new PostgreSqlAdapter) + if (Props.devMode) + s.setLogger(_s => logger.info(_s)) + s + } + } + + S.addAround(new LoanWrapper { + override def apply[T](f: => T): T = { + val s = Session.currentSessionOption.getOrElse( + SessionFactory.newSession) + s.bindToCurrentThread + transaction { f } + } + }) + } +} +// vim: set ts=2 sw=2 et: