import { Controller, Get, Inject, Module } from '@nestjs/common'; import type { Database } from '@atlas/database'; import { AuthModule } from './auth/auth.module.js'; import { ApiError } from './common/api-error.js'; import { Public } from './common/public.decorator.js'; import { AppConfigModule } from './config/app-config.module.js'; import { DATABASE, DatabaseModule } from './database/database.module.js'; import { SecurityModule } from './security/security.module.js'; import { StoresModule } from './stores/stores.module.js'; import { WatermarksModule } from './watermarks/watermarks.module.js'; import { MediaModule } from './media/media.module.js'; import { CollectionModule } from './collection/collection.module.js'; @Controller() class HealthController { public constructor(@Inject(DATABASE) private readonly database: Database) {} @Get('health') @Public() check() { return { status: 'ok', service: 'api' }; } @Get('ready') @Public() async ready() { try { await this.database.query('SELECT 1'); return { status: 'ready', service: 'api' }; } catch { throw new ApiError( 503, 'DEPENDENCY_UNAVAILABLE', '服务依赖暂不可用', ); } } } @Module({ imports: [ AppConfigModule, DatabaseModule, SecurityModule, AuthModule, StoresModule, WatermarksModule, MediaModule, CollectionModule, ], controllers: [HealthController], }) export class AppModule {}