--- a/src/main/scala/fis/pm/model/PmSchema.scala Thu May 24 11:19:26 2012 +0200
+++ b/src/main/scala/fis/pm/model/PmSchema.scala Wed May 30 22:51:02 2012 +0200
@@ -18,9 +18,11 @@
import fis.aaa.model.{AaaSchema, User}
import fis.base.model.{BaseSchema, Entity}
import fis.cl.model.CodeListSchema
+import fis.fs.model.FsSchema
import net.liftweb.squerylrecord.RecordTypeMode._
-trait PmSchema extends BaseSchema with AaaSchema with CodeListSchema {
+trait PmSchema extends BaseSchema with AaaSchema with CodeListSchema with
+ FsSchema {
/* project */
val projectT = tableWithSeq[Project]
@@ -81,6 +83,24 @@
))
projectLocation.leftForeignKeyDeclaration.constrainReference(onDelete cascade)
projectLocation.rightForeignKeyDeclaration.constrainReference(onDelete cascade)
+
+ /* project/task attachments */
+ val projectAttachment = manyToManyRelation(projectT, attachmentT).
+ via[ProjectAttachment]((p, a, pa) => (
+ p.id === pa.project,
+ a.id === pa.attachment
+ ))
+ projectAttachment.leftForeignKeyDeclaration.constrainReference(onDelete cascade)
+ projectAttachment.rightForeignKeyDeclaration.constrainReference(onDelete cascade)
+
+ val taskAttachment = manyToManyRelation(taskT, attachmentT).
+ via[TaskAttachment]((t, a, ta) => (
+ t.id === ta.task,
+ a.id === ta.attachment
+ ))
+ taskAttachment.leftForeignKeyDeclaration.constrainReference(onDelete cascade)
+ taskAttachment.rightForeignKeyDeclaration.constrainReference(onDelete cascade)
+
}
object PmSchema extends PmSchema
@@ -128,6 +148,20 @@
from(PmSchema.projectLocation.right(l))(p => select(p) orderBy(p.name asc))
}
+object ProjectAttachments {
+ import fis.fs.model._
+ def apply(p: Project): Iterable[Attachment] =
+ from(PmSchema.projectAttachment.left(p))(a =>
+ select(a) orderBy(a.name asc))
+}
+
+object TaskAttachments {
+ import fis.fs.model._
+ def apply(t: Task): Iterable[Attachment] =
+ from(PmSchema.taskAttachment.left(t))(a =>
+ select(a) orderBy(a.name asc))
+}
+
/* Many-to-many relations */
import org.squeryl.KeyedEntity
@@ -143,4 +177,14 @@
def id = CompositeKey2(project, location)
}
+case class ProjectAttachment(val project: Long, val attachment: Long)
+ extends KeyedEntity[CompositeKey2[Long, Long]] {
+ def id = CompositeKey2(project, attachment)
+}
+
+case class TaskAttachment(val task: Long, val attachment: Long)
+ extends KeyedEntity[CompositeKey2[Long, Long]] {
+ def id = CompositeKey2(task, attachment)
+}
+
// vim: set ts=2 sw=2 et: