func insertBuildMetrics()

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")
        }
    }