hunk.code_window: export class MetadataService {
     private logger = new Logger(MetadataService.name);
     private storageCore: StorageCore;
     private configCore: SystemConfigCore;
     private oldCities?: string;
     constructor(
       @Inject(IAlbumRepository) private albumRepository: IAlbumRepository,
       @Inject(IAssetRepository) private assetRepository: IAssetRepository,
       @Inject(ICryptoRepository) private cryptoRepository: ICryptoRepository,
  
hunk.labels: keep keep keep keep add keep keep keep keep keep
hunk.after_edit:   private subscription: Subscription | null = null;
  
hunk.file_path: server/src/domain/metadata/metadata.service.ts
hunk.type: add
file: import { envName, getLogLevels, serverVersion } from '@app/domain';
  import { RedisIoAdapter } from '@app/infra';
  import { Logger } from '@nestjs/common';
  import { NestFactory } from '@nestjs/core';
  import { AppService } from './app.service';
  import { MicroservicesModule } from './microservices.module';
  
  const logger = new Logger('ImmichMicroservice');
  const port = Number(process.env.MICROSERVICES_PORT) || 3002;
  
  export async function bootstrap() {
    const app = await NestFactory.create(MicroservicesModule, { logger: getLogLevels() });
  
    app.useWebSocketAdapter(new RedisIoAdapter(app));
  
    await app.get(AppService).init();
    await app.listen(port);
  
    logger.log(`Immich Microservices is listening on ${await app.getUrl()} [v${serverVersion}] [${envName}] `);
  }
  