diff --git a/src/main.ts b/src/main.ts index 3f83d27..7a8807c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,8 @@ -import { setupFastify, startFastify } from '@/modules/fastify'; +import { + setupFastify, + setupFastifyRoutes, + startFastify, +} from '@/modules/fastify'; import { setupJobs } from '@/modules/jobs'; import { setupMetrics } from '@/modules/metrics'; import { setupMikroORM } from '@/modules/mikro'; @@ -18,6 +22,7 @@ async function bootstrap(): Promise { await setupMetrics(app); await setupJobs(); + await setupFastifyRoutes(app); await startFastify(app); log.info(`App setup, ready to accept connections`, { diff --git a/src/modules/fastify/index.ts b/src/modules/fastify/index.ts index c2e0943..7df91e0 100644 --- a/src/modules/fastify/index.ts +++ b/src/modules/fastify/index.ts @@ -19,7 +19,6 @@ export async function setupFastify(): Promise { logger: makeFastifyLogger(log) as any, trustProxy: conf.server.trustProxy, }); - let exportedApp: FastifyInstance | null = null; app.setValidatorCompiler(validatorCompiler); app.setSerializerCompiler(serializerCompiler); @@ -55,26 +54,14 @@ export async function setupFastify(): Promise { }); }); - // plugins & routes - log.info(`setting up plugins and routes`, { evt: 'setup-plugins' }); + // plugins + log.info(`setting up plugins`, { evt: 'setup-plugins' }); await app.register(cors, { origin: conf.server.cors.split(' ').filter((v) => v.length > 0), credentials: true, }); - await app.register( - async (api, opts, done) => { - setupRoutes(api); - exportedApp = api; - done(); - }, - { - prefix: conf.server.basePath, - }, - ); - - if (!exportedApp) throw new Error('no app to export in fastify'); - return exportedApp; + return app; } export function startFastify(app: FastifyInstance) { @@ -102,3 +89,16 @@ export function startFastify(app: FastifyInstance) { ); }); } + +export async function setupFastifyRoutes(app: FastifyInstance) { + log.info(`setting up routes`, { evt: 'setup-plugins' }); + await app.register( + async (api, opts, done) => { + setupRoutes(api); + done(); + }, + { + prefix: conf.server.basePath, + }, + ); +} diff --git a/src/modules/jobs/list/sessionExpiry.ts b/src/modules/jobs/list/sessionExpiry.ts index c352e68..c37a654 100644 --- a/src/modules/jobs/list/sessionExpiry.ts +++ b/src/modules/jobs/list/sessionExpiry.ts @@ -1,5 +1,4 @@ import { Session } from '@/db/models/Session'; -import { User } from '@/db/models/User'; import { job } from '@/modules/jobs/job'; // every day at 12:00:00 diff --git a/src/modules/metrics/index.ts b/src/modules/metrics/index.ts index b52e503..45a25fc 100644 --- a/src/modules/metrics/index.ts +++ b/src/modules/metrics/index.ts @@ -17,6 +17,7 @@ export type Metrics = { | 'status' | 'type' | 'provider_id' + | 'embed_id' >; }; @@ -30,7 +31,13 @@ export function getMetrics() { export async function setupMetrics(app: FastifyInstance) { log.info(`Setting up metrics...`, { evt: 'start' }); - await app.register(metricsPlugin, { endpoint: '/metrics' }); + await app.register(metricsPlugin, { + endpoint: '/metrics', + routeMetrics: { + enabled: true, + registeredRoutesOnly: true, + }, + }); metrics = { user: new Counter({ @@ -49,6 +56,7 @@ export async function setupMetrics(app: FastifyInstance) { 'title', 'tmdb_id', 'type', + 'embed_id', ], }), };