mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-01-16 16:47:13 +01:00
Fix for notifications: When a vulnerability reappears, it should not try to recreate a ticket for it
This commit is contained in:
@@ -61,7 +61,10 @@ class Notifications @Inject()(
|
||||
) = {
|
||||
val vulnerabilitiesByName = lds.vulnerabilitiesToDependencies.map{case (v, deps) => (v.name, (v, deps))}
|
||||
for{
|
||||
tickets <- ep.loadUnfinishedTickets().map(_.map{case rec @ (id, ticket) => ticket.vulnerabilityName->rec}.toMap)
|
||||
// TODO: Prevent loading all tickets
|
||||
allTickets <- ep.loadAllTickets().map(_.map{case rec @ (id, ticket) => ticket.vulnerabilityName->rec}.toMap)
|
||||
tickets = allTickets.filter(_._2._2.done == false)
|
||||
//tickets <- ep.loadUnfinishedTickets().map(_.map{case rec @ (id, ticket) => ticket.vulnerabilityName->rec}.toMap)
|
||||
// Check existing tickets
|
||||
existingTicketsIds = tickets.values.map(_._1).toSet
|
||||
ticketsById = tickets.values.toMap
|
||||
@@ -86,7 +89,7 @@ class Notifications @Inject()(
|
||||
}
|
||||
}
|
||||
// Check new tickets
|
||||
missingTickets = vulnerabilitiesByName.keySet -- tickets.keySet
|
||||
missingTickets = vulnerabilitiesByName.keySet -- allTickets.keySet
|
||||
newTicketIds <- Future.traverse(filterMissingTickets(missingTickets)){vulnerabilityName =>
|
||||
val (vulnerability, dependencies) = vulnerabilitiesByName(vulnerabilityName)
|
||||
reportVulnerability(vulnerability, dependencies).flatMap{ ticket =>
|
||||
|
||||
@@ -68,6 +68,10 @@ class VulnerabilityNotificationService @Inject() (protected val dbConfigProvider
|
||||
ept.tickets.filter(_.done === false).result
|
||||
)
|
||||
|
||||
def loadAllTickets(): Future[Seq[(Int, ExportedVulnerability[T])]] = db.run(
|
||||
ept.tickets.result
|
||||
)
|
||||
|
||||
def changeProjects(ticketId: Int, diff: SetDiff[String], projects: ProjectsWithReports): Future[Unit] = db.run(
|
||||
DBIO.seq(
|
||||
ept.tickets.filter(_.id === ticketId).map(_.done).update(diff.newSet.isEmpty),
|
||||
|
||||
Reference in New Issue
Block a user