Develop with pleasure!

福岡でCloudとかBlockchainとか。

Squerylのコールバック機能使ってみる

org.squeryl.Schemaを見てたらどうやらSquerylにもコールバック機能があるみたいなので使ってみた。
ちなみにorg.squeryl.Schemaで定義されているコールバックは

def callbacks: Seq[LifecycleEvent] = Nil

と、何も定義されてない。

使い方は簡単でorg.squeryl.Schemaを継承したobjectで↑のcallbacksを再定義するだけ。

import org.squeryl.Schema
import org.squeryl.internals.LifecycleEvent

object SampleSchema extends Schema {

  val users = table[User]

  override def callbacks: Seq[LifecycleEvent] = {
    Seq(beforeInsert(users) call(x => コールバックで実行したい処理 ))
  }

}

定義されてるコールバックは↓

  • beforeInsert
  • beforeUpdate
  • beforeDelete
  • afterInsert
  • afterUpdate
  • afterDelete

(※factoryForってのもあるけど何するんだろ?)


各モデルに対して共通の事前/事後処理するのに便利ね。