54 lines
1.6 KiB
TypeScript
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 {}
|