mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-01-13 15:23:59 +01:00
86 lines
4.2 KiB
Scala
86 lines
4.2 KiB
Scala
|
|
import java.nio.file.{Paths, Files}
|
|
|
|
import slick.lifted.MappedProjection
|
|
|
|
import scala.language.reflectiveCalls
|
|
|
|
package object models {
|
|
val profile = slick.driver.PostgresDriver
|
|
|
|
val jodaSupport = com.github.tototoshi.slick.PostgresJodaSupport
|
|
import profile.api._
|
|
import profile.MappedJdbcType
|
|
|
|
|
|
object tables {
|
|
val libraries = TableQuery[Libraries]
|
|
val libraryTagAssignments = TableQuery[LibraryTagAssignments]
|
|
val tags = TableQuery[LibraryTags]
|
|
val snoozesTable = TableQuery[Snoozes]
|
|
val authTokens = TableQuery[CookieAuthenticators]
|
|
val vulnerabilitySubscriptions = TableQuery[VulnerabilitySubscriptions]
|
|
val changelog = TableQuery[Changes]
|
|
val notificationDigestStatuses = TableQuery[NotificationDigestStatuses]
|
|
|
|
val issueTrackerExportTables = new ExportPlatformTables[String, (String, String, Int, Boolean)](){
|
|
val tableNamePart = "issue_tracker"
|
|
class IssueTrackerVulnerabilities(tag: Tag) extends ExportedVulnerabilities[String, (String, String, Int, Boolean)](tag, tableNamePart){
|
|
def ticket = column[String]("ticket")
|
|
override def base = (vulnerabilityName, ticket, ticketFormatVersion, done) <> ((ExportedVulnerability.apply[String] _).tupled, ExportedVulnerability.unapply[String])
|
|
def idx_ticket = index("idx_ticket", ticket, unique = true)
|
|
}
|
|
class IssueTrackerVulnerabilityProject(tag: Tag) extends ExportedVulnerabilityProjects(tag, tableNamePart)
|
|
override val tickets = TableQuery[IssueTrackerVulnerabilities]
|
|
override val projects: profile.api.TableQuery[_ <: ExportedVulnerabilityProjects] = TableQuery[IssueTrackerVulnerabilityProject]
|
|
}
|
|
type EmailExportedVulnerabilitiesShape = (String, EmailMessageId, Int, Boolean)
|
|
val mailExportTables = new ExportPlatformTables[EmailMessageId, EmailExportedVulnerabilitiesShape](){
|
|
val tableNamePart = "email"
|
|
class EmailExportedVulnerabilities(tag: Tag) extends ExportedVulnerabilities[EmailMessageId, EmailExportedVulnerabilitiesShape](tag, tableNamePart){
|
|
private implicit val mmiMapper = MappedJdbcType.base[EmailMessageId, String](_.messageId, EmailMessageId)
|
|
def messageId = column[EmailMessageId]("message_id") // Unlike ticket, message id is not required to be unique in order to handle some edge cases like play.mailer.mock = true
|
|
override def base = (vulnerabilityName, messageId, ticketFormatVersion, done) <> ( (ExportedVulnerability.apply[EmailMessageId] _).tupled, ExportedVulnerability.unapply[EmailMessageId])
|
|
}
|
|
class EmailVulnerabilityProject(tag: Tag) extends ExportedVulnerabilityProjects(tag, tableNamePart)
|
|
|
|
override val projects = TableQuery[EmailVulnerabilityProject]
|
|
override val tickets = TableQuery[EmailExportedVulnerabilities]
|
|
}
|
|
|
|
val diffDbExportTables = new ExportPlatformTables[String, (String, Int, Boolean)] {
|
|
val tableNamePart = "diff_db"
|
|
class DiffDbVulnerabilities(tag: Tag) extends ExportedVulnerabilities[String, (String, Int, Boolean)](tag, tableNamePart){
|
|
override def base: MappedProjection[ExportedVulnerability[String], (String, Int, Boolean)] = (vulnerabilityName, ticketFormatVersion, done) <> (
|
|
((n: String, v: Int, d: Boolean) => ExportedVulnerability[String](n, n, v, d)).tupled,
|
|
obj => ExportedVulnerability.unapply[String](obj).map{case (n, _, v, d) => (n, v, d)}
|
|
)
|
|
}
|
|
class DiffDbVulnerabilityProject(tag: Tag) extends ExportedVulnerabilityProjects(tag, tableNamePart)
|
|
|
|
override val projects = TableQuery[DiffDbVulnerabilityProject]
|
|
override val tickets = TableQuery[DiffDbVulnerabilities]
|
|
}
|
|
|
|
/*{
|
|
import profile.SchemaDescription
|
|
val schema = Seq[Any{def schema: SchemaDescription}](
|
|
//notificationDigestStatuses
|
|
//diffDbExportTables, mailExportTables, issueTrackerExportTables
|
|
).map(_.schema).foldLeft(profile.DDL(Seq(), Seq()))(_ ++ _)
|
|
|
|
val sql = Seq(
|
|
"# --- !Ups",
|
|
schema.createStatements.toSeq.map(_+";").mkString("\n").dropWhile(_ == "\n"),
|
|
"",
|
|
"# --- !Downs",
|
|
schema.dropStatements.toSeq.map(_+";").mkString("\n").dropWhile(_ == "\n"),
|
|
"\n"
|
|
).mkString("\n")
|
|
Files.write(Paths.get("conf/evolutions/default/10.sql"), sql.getBytes("utf-8"))
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|