Skip to content

Commit

Permalink
ChildCollection now allows find by parentId with key includes/exclude…
Browse files Browse the repository at this point in the history
…s as well as child id.
  • Loading branch information
rktoomey committed Sep 19, 2011
1 parent b21b03a commit 08aaff5
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
8 changes: 8 additions & 0 deletions salat-core/src/main/scala/com/novus/salat/dao/SalatDAO.scala
Expand Up @@ -145,6 +145,14 @@ abstract class SalatDAO[ObjectType <: CaseClass, ID <: Any](val collection: Mong
childDao.find(parentIdsQuery(parentIds) ++ query)
}

def findByParentId(parentId: ID, query: DBObject, keys: DBObject): SalatMongoCursor[ChildType] = {
childDao.find(parentIdQuery(parentId) ++ query, keys)
}

def findByParentIds(parentIds: List[ID], query: DBObject, keys: DBObject): SalatMongoCursor[ChildType] = {
childDao.find(parentIdsQuery(parentIds) ++ query, keys)
}

def updateByParentId[A <% DBObject](parentId: ID, o: A, upsert: Boolean, multi: Boolean, wc: WriteConcern = collection.writeConcern) {
childDao.update(parentIdQuery(parentId), o, upsert, multi, wc)
}
Expand Down
Expand Up @@ -26,6 +26,8 @@ import com.mongodb.casbah.Imports._
import com.novus.salat.annotations._
import org.scala_tools.time.Imports._
import com.novus.salat.dao.SalatDAO
import org.joda.time.DateMidnight
import org.joda.time.DateTimeConstants._

@Salat
trait Beta {
Expand Down Expand Up @@ -58,10 +60,10 @@ object XiDAO extends SalatDAO[Xi, ObjectId](collection = MongoConnection()(Salat

object KappaDAO extends SalatDAO[Kappa, ObjectId](collection = MongoConnection()(SalatSpecDb)(KappaColl))

case class ChildInfo(lastUpdated: DateTime = DateTime.now)
case class ChildInfo(lastUpdated: DateTime = new DateMidnight(0L).toDateTime)
case class Child(@Key("_id") id: Int,
parentId: ObjectId,
x: String,
x: String = "",
childInfo: ChildInfo = ChildInfo(),
y: Option[String] = None)
case class Parent(@Key("_id") id: ObjectId = new ObjectId, name: String)
Expand Down
Expand Up @@ -42,6 +42,17 @@ class ChildCollectionSpec extends SalatSpec {
ParentDAO.children.findByParentId(parent3.id).toList must beEmpty
}

"support finding children by parent id with key includes" in new parentChildContext {
ParentDAO.children.findByParentId(parentId = parent1.id, query = MongoDBObject(), keys = MongoDBObject("parentId" -> 1, "y" -> 1)).toList must contain(
child1Parent1.copy(x = "", childInfo = ChildInfo()),
child2Parent1.copy(x = "", childInfo = ChildInfo()),
child3Parent1.copy(x = "", childInfo = ChildInfo())).only
ParentDAO.children.findByParentId(parentId = parent2.id, query = MongoDBObject(), keys = MongoDBObject("parentId" -> 1, "y" -> 1)).toList must contain(
child1Parent2.copy(x = "", childInfo = ChildInfo()),
child2Parent2.copy(x = "", childInfo = ChildInfo())).only
ParentDAO.children.findByParentId(parent3.id).toList must beEmpty
}

"support finding child IDs by typed parent id" in new parentChildContext {
ParentDAO.children.idsForParentId(parent1.id).toList must contain(1, 2, 3).only
ParentDAO.children.idsForParentId(parent2.id).toList must contain(4, 5).only
Expand Down

0 comments on commit 08aaff5

Please sign in to comment.