I have a Workspace
and Document
entities, with the idea that a workspace can contain zero, one, or more documents. My first approach to model this was:
case class Workspace(name: String, documents: Seq[Document])
but this will not scale well since my workspaces may contain many documents. Fortunately, my business requirement allow me to treat workspaces and documents separately (in the sense that when I have a workspace, there is no reason or invariant that forces me to consider all documents contained in it).
Question: I am wondering: how would I model Workspace
and Document
in Sorm so that I have a link between the two but do not have to load all documents of a workspace? I imagine to have a Repository that would give me access to the documents of a workspace, with pagination support.)
case class Workspace(name: String)
case class Document(name: String, /* ... */)
trait WorkspaceRepository {
def children(ws: Workspace, offset: Long, limit: Long)
}
See Question&Answers more detail:os