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.CommitRef |
29 import de.uapcore.lightpit.types.IssueHistoryType |
30 import de.uapcore.lightpit.types.IssueHistoryType |
30 import de.uapcore.lightpit.types.RelationType |
31 import de.uapcore.lightpit.types.RelationType |
31 import de.uapcore.lightpit.types.WebColor |
32 import de.uapcore.lightpit.types.WebColor |
32 import de.uapcore.lightpit.viewmodel.ComponentSummary |
33 import de.uapcore.lightpit.viewmodel.ComponentSummary |
33 import de.uapcore.lightpit.viewmodel.IssueSummary |
34 import de.uapcore.lightpit.viewmodel.IssueSummary |
356 //<editor-fold desc="Project"> |
357 //<editor-fold desc="Project"> |
357 |
358 |
358 //language=SQL |
359 //language=SQL |
359 private val projectQuery = |
360 private val projectQuery = |
360 """ |
361 """ |
361 select projectid, name, node, ordinal, description, repourl, |
362 select projectid, name, node, ordinal, description, vcs, repourl, |
362 userid, username, lastname, givenname, mail |
363 userid, username, lastname, givenname, mail |
363 from lpit_project |
364 from lpit_project |
364 left join lpit_user owner on lpit_project.owner = owner.userid |
365 left join lpit_user owner on lpit_project.owner = owner.userid |
365 """.trimIndent() |
366 """.trimIndent() |
366 |
367 |
368 Project(getInt("projectid")).apply { |
369 Project(getInt("projectid")).apply { |
369 name = getString("name") |
370 name = getString("name") |
370 node = getString("node") |
371 node = getString("node") |
371 ordinal = getInt("ordinal") |
372 ordinal = getInt("ordinal") |
372 description = getString("description") |
373 description = getString("description") |
|
374 vcs = getEnum("vcs") |
373 repoUrl = getString("repourl") |
375 repoUrl = getString("repourl") |
374 owner = extractOptionalUser() |
376 owner = extractOptionalUser() |
375 } |
377 } |
376 |
378 |
377 private fun PreparedStatement.setProject(index: Int, project: Project): Int { |
379 private fun PreparedStatement.setProject(index: Int, project: Project): Int { |
379 with(project) { |
381 with(project) { |
380 setStringSafe(i++, name) |
382 setStringSafe(i++, name) |
381 setStringSafe(i++, node) |
383 setStringSafe(i++, node) |
382 setInt(i++, ordinal) |
384 setInt(i++, ordinal) |
383 setStringOrNull(i++, description) |
385 setStringOrNull(i++, description) |
|
386 setEnum(i++, vcs) |
384 setStringOrNull(i++, repoUrl) |
387 setStringOrNull(i++, repoUrl) |
385 setIntOrNull(i++, owner?.id) |
388 setIntOrNull(i++, owner?.id) |
386 } |
389 } |
387 return i |
390 return i |
388 } |
391 } |
403 setString(1, node) |
406 setString(1, node) |
404 querySingle { it.extractProject() } |
407 querySingle { it.extractProject() } |
405 } |
408 } |
406 |
409 |
407 override fun insertProject(project: Project) { |
410 override fun insertProject(project: Project) { |
408 withStatement("insert into lpit_project (name, node, ordinal, description, repourl, owner) values (?, ?, ?, ?, ?, ?)") { |
411 withStatement("insert into lpit_project (name, node, ordinal, description, vcs, repourl, owner) values (?, ?, ?, ?, ?::vcstype, ?, ?)") { |
409 setProject(1, project) |
412 setProject(1, project) |
410 executeUpdate() |
413 executeUpdate() |
411 } |
414 } |
412 } |
415 } |
413 |
416 |
414 override fun updateProject(project: Project) { |
417 override fun updateProject(project: Project) { |
415 withStatement("update lpit_project set name = ?, node = ?, ordinal = ?, description = ?, repourl = ?, owner = ? where projectid = ?") { |
418 withStatement("update lpit_project set name = ?, node = ?, ordinal = ?, description = ?, vcs = ?::vcstype, repourl = ?, owner = ? where projectid = ?") { |
416 val col = setProject(1, project) |
419 val col = setProject(1, project) |
417 setInt(col, project.id) |
420 setInt(col, project.id) |
418 executeUpdate() |
421 executeUpdate() |
419 } |
422 } |
420 } |
423 } |
468 } |
471 } |
469 } |
472 } |
470 summary |
473 summary |
471 } |
474 } |
472 } |
475 } |
|
476 |
|
477 override fun mergeCommitRefs(refs: List<CommitRef>) { |
|
478 withStatement("insert into lpit_commit_ref (issueid, commit_hash, commit_brief) values (?,?,?) on conflict do nothing") { |
|
479 refs.forEach { ref -> |
|
480 setInt(1, ref.issueId) |
|
481 setString(2, ref.hash) |
|
482 setString(3, ref.message) |
|
483 executeUpdate() |
|
484 } |
|
485 } |
|
486 } |
473 |
487 |
474 //</editor-fold> |
488 //</editor-fold> |
475 |
489 |
476 //<editor-fold desc="Issue"> |
490 //<editor-fold desc="Issue"> |
477 |
491 |
633 setStringOrNull(8, issue.resolved?.name) |
647 setStringOrNull(8, issue.resolved?.name) |
634 setInt(9, eventid) |
648 setInt(9, eventid) |
635 executeUpdate() |
649 executeUpdate() |
636 } |
650 } |
637 } |
651 } |
|
652 |
|
653 override fun listCommitRefs(issue: Issue): List<CommitRef> = |
|
654 withStatement("select commit_hash, commit_brief from lpit_commit_ref where issueid = ?") { |
|
655 setInt(1, issue.id) |
|
656 queryAll { |
|
657 CommitRef( |
|
658 issueId = issue.id, |
|
659 hash = it.getString("commit_hash"), |
|
660 message = it.getString("commit_brief") |
|
661 ) |
|
662 } |
|
663 } |
638 |
664 |
639 //</editor-fold> |
665 //</editor-fold> |
640 |
666 |
641 //<editor-fold desc="Issue Relations"> |
667 //<editor-fold desc="Issue Relations"> |
642 override fun insertIssueRelation(rel: IssueRelation) { |
668 override fun insertIssueRelation(rel: IssueRelation) { |