diff -r dcb1d5a7ea3a -r 296e12ff8d1c src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt --- 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() + } + } + // // @@ -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() + } + } + // } \ No newline at end of file