2023-05-26 08:52:52 -04:00
|
|
|
import { getLogLevels, SERVER_VERSION } from '@app/domain';
|
|
|
|
|
import { RedisIoAdapter } from '@app/infra';
|
2022-06-11 16:12:06 -05:00
|
|
|
import { Logger } from '@nestjs/common';
|
|
|
|
|
import { NestFactory } from '@nestjs/core';
|
|
|
|
|
import { MicroservicesModule } from './microservices.module';
|
2023-05-26 08:52:52 -04:00
|
|
|
import { ProcessorService } from './processor.service';
|
2023-05-20 22:39:12 -04:00
|
|
|
import { MetadataExtractionProcessor } from './processors/metadata-extraction.processor';
|
2022-06-11 16:12:06 -05:00
|
|
|
|
2022-12-08 10:53:18 -05:00
|
|
|
const logger = new Logger('ImmichMicroservice');
|
|
|
|
|
|
2022-06-11 16:12:06 -05:00
|
|
|
async function bootstrap() {
|
2023-01-13 09:23:12 -05:00
|
|
|
const app = await NestFactory.create(MicroservicesModule, {
|
|
|
|
|
logger: getLogLevels(),
|
|
|
|
|
});
|
2022-06-11 16:12:06 -05:00
|
|
|
|
2023-01-28 00:12:38 -05:00
|
|
|
const listeningPort = Number(process.env.MICROSERVICES_PORT) || 3002;
|
2023-01-24 06:18:35 +02:00
|
|
|
|
2023-05-26 08:52:52 -04:00
|
|
|
await app.get(ProcessorService).init();
|
|
|
|
|
|
2023-03-31 10:36:08 -04:00
|
|
|
app.useWebSocketAdapter(new RedisIoAdapter(app));
|
2022-06-19 08:16:35 -05:00
|
|
|
|
2023-05-20 22:39:12 -04:00
|
|
|
const metadataService = app.get(MetadataExtractionProcessor);
|
|
|
|
|
|
|
|
|
|
process.on('uncaughtException', (error: Error | any) => {
|
|
|
|
|
const isCsvError = error.code === 'CSV_RECORD_INCONSISTENT_FIELDS_LENGTH';
|
|
|
|
|
if (!isCsvError) {
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logger.warn('Geocoding csv parse error, trying again without cache...');
|
|
|
|
|
metadataService.init(true);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await metadataService.init();
|
|
|
|
|
|
2023-01-24 06:18:35 +02:00
|
|
|
await app.listen(listeningPort, () => {
|
2022-12-08 10:53:18 -05:00
|
|
|
const envName = (process.env.NODE_ENV || 'development').toUpperCase();
|
2023-01-24 06:18:35 +02:00
|
|
|
logger.log(
|
|
|
|
|
`Running Immich Microservices in ${envName} environment - version ${SERVER_VERSION} - Listening on port: ${listeningPort}`,
|
|
|
|
|
);
|
2022-06-11 16:12:06 -05:00
|
|
|
});
|
|
|
|
|
}
|
2023-05-20 22:39:12 -04:00
|
|
|
|
2022-06-11 16:12:06 -05:00
|
|
|
bootstrap();
|