in Sources/XCMetricsBackendLib/Common/Repositories/Postgress/PostgreSQLMetricsRepository.swift [41:62]
func insertBuildMetrics(_ buildMetrics: BuildMetrics, using eventLoop: EventLoop) -> EventLoopFuture<Void> {
let metrics = decorateMetricsWithDay(buildMetrics)
return db.transaction { database in
logWithTimestamp(self.logger, msg: "[PostgressMetricsRepository] creating daily partitions")
return self.createDailyPartitions(on: database, using: eventLoop, for: metrics)
}.flatMap { (_ : Void) -> EventLoopFuture<Void> in
logWithTimestamp(self.logger, msg: "[PostgressMetricsRepository] creating daily partitions")
return self.findBuild(with: buildMetrics.build.id, using: eventLoop).flatMap { build -> EventLoopFuture<Void> in
// Insert the build in db only once
guard build == nil else {
logWithTimestamp(self.logger, msg: "[PostgressMetricsRepository] build already inserted in db")
return eventLoop.future()
}
return self.db.transaction { database in
self.insert(on: database, buildMetrics: buildMetrics)
}
}
}.map {
logWithTimestamp(self.logger, msg: "[PostgressMetricsRepository] metrics inserted")
}
}