PageRenderTime 24ms CodeModel.GetById 47ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/scala/org/desmax/repository/impl/CasbahRepository.scala

https://github.com/desmax74/codemotion-2010
Scala | 47 lines | 38 code | 8 blank | 1 comment | 0 complexity | d4ccef6988a0865b04c556130434ef0c MD5 | raw file
  1. package org.desmax.repository.impl
  2. import scala.collection.mutable.ListBuffer
  3. import com.mongodb.casbah.commons.{MongoDBObject}
  4. import org.desmax.repository.BlogRepository
  5. import org.desmax.domain.{BlogField, BlogPost}
  6. import com.mongodb.casbah.MongoConnection
  7. import com.novus.salat._
  8. import com.novus.salat.global._
  9. import java.util.Date
  10. import com.mongodb.casbah.Imports._ //important don't remove it like idea suggests !
  11. class CasbahRepository extends BlogRepository {
  12. val mongoColl = MongoConnection("localhost",27017)("codemotion")("test_data")
  13. def remove(post: BlogPost):Boolean = {
  14. val writeResult = mongoColl.remove(grater[BlogPost].asDBObject(post))
  15. writeResult.getField("ok").equals(1.0)
  16. }
  17. def create(post: BlogPost):Boolean = {
  18. val writeResult = mongoColl.insert(grater[BlogPost].asDBObject(post))
  19. writeResult.getField("ok").equals(1.0)
  20. }
  21. def update(post: BlogPost):Boolean = {
  22. // change only the content
  23. val query = MongoDBObject(BlogField.title -> post.title, BlogField.date -> post.date)
  24. val obj = grater[BlogPost].asDBObject(post)
  25. val writeResult = mongoColl.update(query, obj, true, false) //upsert
  26. writeResult.getField("ok").equals(1.0)
  27. }
  28. def readByDate(date: Date): List[BlogPost] = {
  29. val query = MongoDBObject(BlogField.date -> date)
  30. val list = new ListBuffer[BlogPost]
  31. mongoColl.find(query).foreach(o => list += grater[BlogPost].asObject(o))
  32. list.toList
  33. }
  34. def readByTitle(title: String):BlogPost = {
  35. val query = MongoDBObject(BlogField.title -> title)
  36. val obj = mongoColl.findOne(query).get
  37. grater[BlogPost].asObject(obj)
  38. }
  39. }