Skip to content

Instantly share code, notes, and snippets.

@stephanos
Last active December 14, 2015 10:10
Show Gist options
  • Save stephanos/5070181 to your computer and use it in GitHub Desktop.
Save stephanos/5070181 to your computer and use it in GitHub Desktop.
import net.liftweb.mongodb.record.field.ObjectIdField
import net.liftweb.mongodb.record.{MongoMetaRecord, MongoRecord}
import net.liftweb.record.field.IntField
// ==== BASE
trait BaseDoc
extends MongoRecord[BaseDoc] {
def id = _id.value
object _id extends ObjectIdField(this)
object int extends IntField(this)
}
trait BaseMeta
extends MongoMetaRecord[BaseDoc] {
self: BaseDoc =>
}
// ==== DOC #1
class BaseDoc1 extends BaseDoc {
def meta = BaseMeta1
}
object BaseMeta1 extends BaseDoc1 with BaseMeta
// ==== DOC #2
class BaseDoc2 extends BaseDoc {
def meta = BaseMeta2
}
object BaseMeta2 extends BaseDoc2 with BaseMeta
// ==== QUERY
case class Mod(num: Int) {
def meta: BaseMeta =
num % 2 match {
case 0 => BaseMeta1
case _ => BaseMeta2
}
}
object Main extends App {
val doc = Mod(0).meta.createRecord.int(5)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment