Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.foursquare.rogue.LiftRogue._
- import com.foursquare.rogue.ObjectIdKey
- import com.mongodb.{ Mongo, ServerAddress }
- import net.liftweb.mongodb.{ MongoDB, DefaultMongoIdentifier }
- import net.liftweb.mongodb.record._
- import net.liftweb.mongodb.record.field._
- import net.liftweb.record._
- import net.liftweb.record.field._
- object testing {
- FooMongo.run {
- val job = Job.createRecord.bars(List(Bar("Hello", 123), Bar("World", 456)))
- job.save
- val job1 = Job.where(_._id eqs job.id).get().get
- val barsReloaded = job1.bars.get
- println(barsReloaded.head.getClass) // prints "class java.lang.String"
- } //> class java.lang.String
- // DB CONTENTS:
- // > db.jobs.find().pretty()
- // {
- // "_id" : ObjectId("53471300ef86b0eefa4b0914"),
- // "bars" : [
- // "Bar(Hello,123)",
- // "Bar(World,456)"
- // ]
- // }
- }
- case class Bar(val baz: String, val quux: Int)
- class Job private() extends MongoRecord[Job] with ObjectIdKey[Job] {
- def meta = Job
- object bars extends MongoListField[Job, Bar](this)
- }
- object Job extends Job with MongoMetaRecord[Job] {
- override def mongoIdentifier = FooMongo.mongoId
- }
- object FooMongo {
- val mongoId = DefaultMongoIdentifier
- val mongoHostname = "localhost"
- val mongoPort = 27017
- val mongoDbName = "foodb"
- private var mongo: Option[Mongo] = None
- def run[T](block: => T): T = {
- connect()
- try block
- finally disconnect()
- }
- def connect() = {
- mongo = Some(new Mongo(new ServerAddress(mongoHostname, mongoPort)))
- MongoDB.defineDb(mongoId, mongo.get, mongoDbName)
- }
- def disconnect() = {
- mongo.map(_.close)
- MongoDB.close
- mongo = None
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement