--- a/src/main/scala/fis/pm/model/PmSchema.scala Fri Apr 27 16:18:28 2012 +0200
+++ b/src/main/scala/fis/pm/model/PmSchema.scala Tue May 01 21:40:36 2012 +0200
@@ -63,6 +63,15 @@
val commentTask = oneToManyRelation(taskT, commentT).
via((t, c) => (t.id === c.task))
commentTask.foreignKeyDeclaration.constrainReference(onDelete cascade)
+
+ /* project - company */
+ val projectCompany = manyToManyRelation(projectT, companyT).
+ via[ProjectCompany]((p, c, pc) => (
+ p.id === pc.project,
+ c.id === pc.company
+ ))
+ projectCompany.leftForeignKeyDeclaration.constrainReference(onDelete cascade)
+ projectCompany.rightForeignKeyDeclaration.constrainReference(onDelete cascade)
}
object PmSchema extends PmSchema
@@ -77,4 +86,20 @@
from(PmSchema.commentTask.left(t))(c => select(c) orderBy(c.createdAt asc))
}
+object CompanyProjects {
+ import fis.crm.model.Company
+ def apply(c: Company): Iterable[Project] =
+ from(PmSchema.projectCompany.right(c))(p => select(p) orderBy(p.name asc))
+}
+
+/* Many-to-many relations */
+
+import org.squeryl.KeyedEntity
+import org.squeryl.dsl._
+
+case class ProjectCompany(val project: Long, val company: Long)
+ extends KeyedEntity[CompositeKey2[Long, Long]] {
+ def id = CompositeKey2(project, company)
+}
+
// vim: set ts=2 sw=2 et: