src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt

changeset 232
296e12ff8d1c
parent 231
dcb1d5a7ea3a
child 235
4258b9e010ae
--- a/src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt	Thu Aug 19 14:51:04 2021 +0200
+++ b/src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt	Thu Aug 19 17:20:43 2021 +0200
@@ -26,6 +26,7 @@
 package de.uapcore.lightpit.dao
 
 import de.uapcore.lightpit.entities.*
+import de.uapcore.lightpit.types.IssueHistoryType
 import de.uapcore.lightpit.types.WebColor
 import de.uapcore.lightpit.util.*
 import de.uapcore.lightpit.viewmodel.ComponentSummary
@@ -565,7 +566,7 @@
         val id = withStatement(
             """
             insert into lpit_issue (component, status, category, subject, description, assignee, eta, affected, resolved, project)
-            values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?)
+            values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?)
             returning issueid
             """.trimIndent()
         ) {
@@ -591,6 +592,36 @@
         }
     }
 
+    override fun insertHistoryEvent(issue: Issue, newId: Int) {
+        val type = if (newId > 0) IssueHistoryType.New else IssueHistoryType.Update
+        val issueid = if (newId > 0) newId else issue.id
+
+        val eventid =
+            withStatement("insert into lpit_issue_history_event(issueid, type) values (?,?::issue_history_event) returning eventid") {
+                setInt(1, issueid)
+                setEnum(2, type)
+                querySingle { it.getInt(1) }!!
+            }
+        withStatement(
+            """
+            insert into lpit_issue_history_data (component, status, category, subject, description, assignee, eta, affected, resolved, eventid)
+            values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?)
+            """.trimIndent()
+        ) {
+            setStringOrNull(1, issue.component?.name)
+            setEnum(2, issue.status)
+            setEnum(3, issue.category)
+            setString(4, issue.subject)
+            setStringOrNull(5, issue.description)
+            setStringOrNull(6, issue.assignee?.shortDisplayname)
+            setDateOrNull(7, issue.eta)
+            setStringOrNull(8, issue.affected?.name)
+            setStringOrNull(9, issue.resolved?.name)
+            setInt(10, eventid)
+            executeUpdate()
+        }
+    }
+
     //</editor-fold>
 
     //<editor-fold desc="IssueComment">
@@ -616,20 +647,20 @@
             querySingle { it.extractIssueComment() }
         }
 
-    override fun insertComment(issueComment: IssueComment) {
+    override fun insertComment(issueComment: IssueComment): Int =
         useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate ->
-            withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?)") {
+            withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?) returning commentid") {
                 with(issueComment) {
                     updateIssueDate.setInt(1, issueid)
                     setInt(1, issueid)
                     setStringSafe(2, comment)
                     setIntOrNull(3, author?.id)
                 }
-                executeUpdate()
+                val commentid = querySingle { it.getInt(1) }!!
                 updateIssueDate.executeUpdate()
+                commentid
             }
         }
-    }
 
     override fun updateComment(issueComment: IssueComment) {
         useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate ->
@@ -644,5 +675,25 @@
             }
         }
     }
+
+
+    override fun insertHistoryEvent(issueComment: IssueComment, newId: Int) {
+        val type = if (newId > 0) IssueHistoryType.NewComment else IssueHistoryType.UpdateComment
+        val commentid = if (newId > 0) newId else issueComment.id
+
+        val eventid =
+            withStatement("insert into lpit_issue_history_event(issueid, type) values (?,?::issue_history_event) returning eventid") {
+                setInt(1, issueComment.issueid)
+                setEnum(2, type)
+                querySingle { it.getInt(1) }!!
+            }
+        withStatement("insert into lpit_issue_comment_history (commentid, eventid, comment) values (?,?,?)") {
+            setInt(1, commentid)
+            setInt(2, eventid)
+            setString(3, issueComment.comment)
+            executeUpdate()
+        }
+    }
+
     //</editor-fold>
 }
\ No newline at end of file

mercurial