Files
atlas-seller-kit/apps/api/src/app.module.ts
T
2026-09-04 17:32:28 +08:00

54 lines
1.6 KiB
TypeScript

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 {}