feat: change default media location to /data (#20367)

* feat!: change default media location to /data

* feat: dynamically detect media location
This commit is contained in:
Jason Rasmussen
2025-07-29 16:58:50 -04:00
committed by GitHub
parent 4cae15f28d
commit 58521c9efb
39 changed files with 316 additions and 209 deletions
+32 -16
View File
@@ -20,6 +20,14 @@ describe(StorageService.name, () => {
it('should enable mount folder checking', async () => {
mocks.systemMetadata.get.mockResolvedValue(null);
mocks.asset.getFileSamples.mockResolvedValue([]);
mocks.config.getEnv.mockReturnValue(
mockEnvData({
storage: {
ignoreMountCheckErrors: false,
mediaLocation: '/data',
},
}),
);
await expect(sut.onBootstrap()).resolves.toBeUndefined();
@@ -33,34 +41,34 @@ describe(StorageService.name, () => {
upload: true,
},
});
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/encoded-video'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/library'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/profile'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/thumbs'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/upload'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/backups'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/encoded-video'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/library'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/profile'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/thumbs'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/upload'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/backups'));
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/encoded-video/.immich'),
expect.stringContaining('/data/encoded-video/.immich'),
expect.any(Buffer),
);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/library/.immich'),
expect.stringContaining('/data/library/.immich'),
expect.any(Buffer),
);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/profile/.immich'),
expect.stringContaining('/data/profile/.immich'),
expect.any(Buffer),
);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/thumbs/.immich'),
expect.stringContaining('/data/thumbs/.immich'),
expect.any(Buffer),
);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/upload/.immich'),
expect.stringContaining('/data/upload/.immich'),
expect.any(Buffer),
);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/backups/.immich'),
expect.stringContaining('/data/backups/.immich'),
expect.any(Buffer),
);
});
@@ -77,6 +85,14 @@ describe(StorageService.name, () => {
},
});
mocks.asset.getFileSamples.mockResolvedValue([]);
mocks.config.getEnv.mockReturnValue(
mockEnvData({
storage: {
ignoreMountCheckErrors: false,
mediaLocation: '/data',
},
}),
);
await expect(sut.onBootstrap()).resolves.toBeUndefined();
@@ -91,15 +107,15 @@ describe(StorageService.name, () => {
},
});
expect(mocks.storage.mkdirSync).toHaveBeenCalledTimes(2);
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/library'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('upload/backups'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/library'));
expect(mocks.storage.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('/data/backups'));
expect(mocks.storage.createFile).toHaveBeenCalledTimes(2);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/library/.immich'),
expect.stringContaining('/data/library/.immich'),
expect.any(Buffer),
);
expect(mocks.storage.createFile).toHaveBeenCalledWith(
expect.stringContaining('upload/backups/.immich'),
expect.stringContaining('/data/backups/.immich'),
expect.any(Buffer),
);
});