Advertisement
eallik

Untitled

Apr 10th, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.73 KB | None | 0 0
  1. import com.foursquare.rogue.LiftRogue._
  2. import com.foursquare.rogue.ObjectIdKey
  3. import com.mongodb.{ Mongo, ServerAddress }
  4. import net.liftweb.mongodb.{ MongoDB, DefaultMongoIdentifier }
  5. import net.liftweb.mongodb.record._
  6. import net.liftweb.mongodb.record.field._
  7. import net.liftweb.record._
  8. import net.liftweb.record.field._
  9.  
  10. object testing {
  11.   FooMongo.run {
  12.     val job = Job.createRecord.bars(List(Bar("Hello", 123), Bar("World", 456)))
  13.     job.save
  14.  
  15.     val job1 = Job.where(_._id eqs job.id).get().get
  16.  
  17.     val barsReloaded = job1.bars.get
  18.     println(barsReloaded.head.getClass) // prints "class java.lang.String"
  19.   }                                               //> class java.lang.String
  20.  
  21. // DB CONTENTS:
  22.  
  23. // > db.jobs.find().pretty()
  24. // {
  25. //   "_id" : ObjectId("53471300ef86b0eefa4b0914"),
  26. //   "bars" : [
  27. //     "Bar(Hello,123)",
  28. //     "Bar(World,456)"
  29. //   ]
  30. // }
  31.  
  32. }
  33.  
  34. case class Bar(val baz: String, val quux: Int)
  35.  
  36. class Job private() extends MongoRecord[Job] with ObjectIdKey[Job] {
  37.   def meta = Job
  38.  
  39.   object bars extends MongoListField[Job, Bar](this)
  40. }
  41. object Job extends Job with MongoMetaRecord[Job] {
  42.   override def mongoIdentifier = FooMongo.mongoId
  43. }
  44.  
  45. object FooMongo {
  46.   val mongoId = DefaultMongoIdentifier
  47.  
  48.   val mongoHostname = "localhost"
  49.   val mongoPort = 27017
  50.   val mongoDbName = "foodb"
  51.  
  52.   private var mongo: Option[Mongo] = None
  53.  
  54.   def run[T](block: => T): T = {
  55.     connect()
  56.     try block
  57.     finally disconnect()
  58.   }
  59.  
  60.   def connect() = {
  61.     mongo = Some(new Mongo(new ServerAddress(mongoHostname, mongoPort)))
  62.     MongoDB.defineDb(mongoId, mongo.get, mongoDbName)
  63.   }
  64.  
  65.   def disconnect() = {
  66.     mongo.map(_.close)
  67.     MongoDB.close
  68.     mongo = None
  69.   }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement