Bladeren bron

fix(server): library folder missing on new install (#2597)

Jason Rasmussen 2 jaren geleden
bovenliggende
commit
caba462703

+ 3 - 0
server/apps/immich/src/main.ts

@@ -6,6 +6,7 @@ import {
   MACHINE_LEARNING_ENABLED,
   SearchService,
   SERVER_VERSION,
+  StorageService,
 } from '@app/domain';
 import { RedisIoAdapter } from '@app/infra';
 import { Logger } from '@nestjs/common';
@@ -72,6 +73,8 @@ async function bootstrap() {
     customSiteTitle: 'Immich API Documentation',
   });
 
+  app.get(StorageService).init();
+
   await app.listen(serverPort, () => {
     if (process.env.NODE_ENV == 'development') {
       // Generate API Documentation only in development mode

+ 7 - 0
server/libs/domain/src/storage/storage.service.spec.ts

@@ -15,6 +15,13 @@ describe(StorageService.name, () => {
     expect(sut).toBeDefined();
   });
 
+  describe('init', () => {
+    it('should create the library folder on initialization', () => {
+      sut.init();
+      expect(storageMock.mkdirSync).toHaveBeenCalledWith('upload/library');
+    });
+  });
+
   describe('handleDeleteFiles', () => {
     it('should handle null values', async () => {
       await sut.handleDeleteFiles({ files: [undefined, null] });

+ 7 - 0
server/libs/domain/src/storage/storage.service.ts

@@ -1,13 +1,20 @@
 import { Inject, Injectable, Logger } from '@nestjs/common';
 import { IDeleteFilesJob } from '../job';
+import { StorageCore, StorageFolder } from './storage.core';
 import { IStorageRepository } from './storage.repository';
 
 @Injectable()
 export class StorageService {
   private logger = new Logger(StorageService.name);
+  private storageCore = new StorageCore();
 
   constructor(@Inject(IStorageRepository) private storageRepository: IStorageRepository) {}
 
+  init() {
+    const libraryBase = this.storageCore.getBaseFolder(StorageFolder.LIBRARY);
+    this.storageRepository.mkdirSync(libraryBase);
+  }
+
   async handleDeleteFiles(job: IDeleteFilesJob) {
     const { files } = job;