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

changeset 232
296e12ff8d1c
parent 231
dcb1d5a7ea3a
child 235
4258b9e010ae
equal deleted inserted replaced
231:dcb1d5a7ea3a 232:296e12ff8d1c
24 */ 24 */
25 25
26 package de.uapcore.lightpit.dao 26 package de.uapcore.lightpit.dao
27 27
28 import de.uapcore.lightpit.entities.* 28 import de.uapcore.lightpit.entities.*
29 import de.uapcore.lightpit.types.IssueHistoryType
29 import de.uapcore.lightpit.types.WebColor 30 import de.uapcore.lightpit.types.WebColor
30 import de.uapcore.lightpit.util.* 31 import de.uapcore.lightpit.util.*
31 import de.uapcore.lightpit.viewmodel.ComponentSummary 32 import de.uapcore.lightpit.viewmodel.ComponentSummary
32 import de.uapcore.lightpit.viewmodel.IssueSummary 33 import de.uapcore.lightpit.viewmodel.IssueSummary
33 import de.uapcore.lightpit.viewmodel.VersionSummary 34 import de.uapcore.lightpit.viewmodel.VersionSummary
563 564
564 override fun insertIssue(issue: Issue): Int { 565 override fun insertIssue(issue: Issue): Int {
565 val id = withStatement( 566 val id = withStatement(
566 """ 567 """
567 insert into lpit_issue (component, status, category, subject, description, assignee, eta, affected, resolved, project) 568 insert into lpit_issue (component, status, category, subject, description, assignee, eta, affected, resolved, project)
568 values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?) 569 values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?)
569 returning issueid 570 returning issueid
570 """.trimIndent() 571 """.trimIndent()
571 ) { 572 ) {
572 val col = setIssue(1, issue) 573 val col = setIssue(1, issue)
573 setInt(col, issue.project.id) 574 setInt(col, issue.project.id)
589 setInt(col, issue.id) 590 setInt(col, issue.id)
590 executeUpdate() 591 executeUpdate()
591 } 592 }
592 } 593 }
593 594
595 override fun insertHistoryEvent(issue: Issue, newId: Int) {
596 val type = if (newId > 0) IssueHistoryType.New else IssueHistoryType.Update
597 val issueid = if (newId > 0) newId else issue.id
598
599 val eventid =
600 withStatement("insert into lpit_issue_history_event(issueid, type) values (?,?::issue_history_event) returning eventid") {
601 setInt(1, issueid)
602 setEnum(2, type)
603 querySingle { it.getInt(1) }!!
604 }
605 withStatement(
606 """
607 insert into lpit_issue_history_data (component, status, category, subject, description, assignee, eta, affected, resolved, eventid)
608 values (?, ?::issue_status, ?::issue_category, ?, ?, ?, ?, ?, ?, ?)
609 """.trimIndent()
610 ) {
611 setStringOrNull(1, issue.component?.name)
612 setEnum(2, issue.status)
613 setEnum(3, issue.category)
614 setString(4, issue.subject)
615 setStringOrNull(5, issue.description)
616 setStringOrNull(6, issue.assignee?.shortDisplayname)
617 setDateOrNull(7, issue.eta)
618 setStringOrNull(8, issue.affected?.name)
619 setStringOrNull(9, issue.resolved?.name)
620 setInt(10, eventid)
621 executeUpdate()
622 }
623 }
624
594 //</editor-fold> 625 //</editor-fold>
595 626
596 //<editor-fold desc="IssueComment"> 627 //<editor-fold desc="IssueComment">
597 628
598 private fun ResultSet.extractIssueComment() = 629 private fun ResultSet.extractIssueComment() =
614 withStatement("select * from lpit_issue_comment left join lpit_user using (userid) where commentid = ?") { 645 withStatement("select * from lpit_issue_comment left join lpit_user using (userid) where commentid = ?") {
615 setInt(1, id) 646 setInt(1, id)
616 querySingle { it.extractIssueComment() } 647 querySingle { it.extractIssueComment() }
617 } 648 }
618 649
619 override fun insertComment(issueComment: IssueComment) { 650 override fun insertComment(issueComment: IssueComment): Int =
620 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> 651 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate ->
621 withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?)") { 652 withStatement("insert into lpit_issue_comment (issueid, comment, userid) values (?, ? ,?) returning commentid") {
622 with(issueComment) { 653 with(issueComment) {
623 updateIssueDate.setInt(1, issueid) 654 updateIssueDate.setInt(1, issueid)
624 setInt(1, issueid) 655 setInt(1, issueid)
625 setStringSafe(2, comment) 656 setStringSafe(2, comment)
626 setIntOrNull(3, author?.id) 657 setIntOrNull(3, author?.id)
627 } 658 }
628 executeUpdate() 659 val commentid = querySingle { it.getInt(1) }!!
629 updateIssueDate.executeUpdate() 660 updateIssueDate.executeUpdate()
630 } 661 commentid
631 } 662 }
632 } 663 }
633 664
634 override fun updateComment(issueComment: IssueComment) { 665 override fun updateComment(issueComment: IssueComment) {
635 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate -> 666 useStatement("update lpit_issue set updated = now() where issueid = ?") { updateIssueDate ->
636 withStatement("update lpit_issue_comment set comment = ?, updatecount = updatecount + 1, updated = now() where commentid = ?") { 667 withStatement("update lpit_issue_comment set comment = ?, updatecount = updatecount + 1, updated = now() where commentid = ?") {
637 with(issueComment) { 668 with(issueComment) {
642 executeUpdate() 673 executeUpdate()
643 updateIssueDate.executeUpdate() 674 updateIssueDate.executeUpdate()
644 } 675 }
645 } 676 }
646 } 677 }
678
679
680 override fun insertHistoryEvent(issueComment: IssueComment, newId: Int) {
681 val type = if (newId > 0) IssueHistoryType.NewComment else IssueHistoryType.UpdateComment
682 val commentid = if (newId > 0) newId else issueComment.id
683
684 val eventid =
685 withStatement("insert into lpit_issue_history_event(issueid, type) values (?,?::issue_history_event) returning eventid") {
686 setInt(1, issueComment.issueid)
687 setEnum(2, type)
688 querySingle { it.getInt(1) }!!
689 }
690 withStatement("insert into lpit_issue_comment_history (commentid, eventid, comment) values (?,?,?)") {
691 setInt(1, commentid)
692 setInt(2, eventid)
693 setString(3, issueComment.comment)
694 executeUpdate()
695 }
696 }
697
647 //</editor-fold> 698 //</editor-fold>
648 } 699 }

mercurial