in Sources/XCMetricsBackendLib/Config/routes.swift [24:74]
func routes(_ app: Application) throws {
app.get { req in
return "It works!"
}
app.get("hello") { req -> String in
return "Hello, world!"
}
// Configuration
let config = Configuration()
// Middleware
let corsConfiguration = CORSMiddleware.Configuration(
allowedOrigin: .any([config.corsAllowed]),
allowedMethods: [.GET, .OPTIONS, .HEAD],
allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin]
)
let cors = CORSMiddleware(configuration: corsConfiguration)
app.middleware.use(cors)
// Log File Repository
let logFileRepository = LogFileRepositoryFactory.makeWithConfiguration(config: config, logger: app.logger)
// Controllers
try app.register(collection: BuildController())
try app.register(collection: UploadMetricsController(fileLogRepository: logFileRepository,
redactUserData: config.redactUserData,
metricsRepository: PostgreSQLMetricsRepository(db: app.db, logger: app.logger),
useAsyncProcessing: config.useAsyncLogProcessing))
try app.register(collection: JobLogController(repository: PostgreSQLJobLogRepository(db: app.db)))
try app.register(collection: StatisticsController(repository: SQLStatisticsRepository(db: app.db)))
if config.useAsyncLogProcessing && app.environment != .testing {
let healthChecker = JobHealthCheckerImpl(queue: app.queues.queue)
try app.register(collection: HealthCheckController(healthChecker: healthChecker))
}
// Run Job queues
if config.useAsyncLogProcessing {
app.queues.add(ProcessMetricsJob(logFileRepository: logFileRepository,
metricsRepository: PostgreSQLMetricsRepository(db: app.db, logger: app.logger),
redactUserData: config.redactUserData))
app.queues.add(HealthCheckJob())
if config.startAsyncJobsInSameInstance {
try app.queues.startInProcessJobs(on: .default)
}
}
}