mirror of
https://github.com/KevinMidboe/immich.git
synced 2025-10-29 17:40:28 +00:00
chore(server): Store generated files (thumbnails, encoded video) in subdirectories (#4112)
* save thumbnails in subdirectories * migration job, migrate assets and face thumbnails * fix tests * directory depth of two instead of three * cleanup empty dirs after migration * clean up empty dirs after migration, migrate people without assetId * add job card for new migration job * fix removeEmptyDirs race condition because of missing await * cleanup empty directories after asset deletion * move ensurePath to storage core * rename jobs * remove unnecessary property of IEntityJob * use updated person getById, minor refactoring * ensure that directory cleanup doesn't interfere with migration * better description for job in ui * fix remove directories when migration is done * cleanup empty folders at start of migration * fix: actually persist concurrency setting * add comment explaining regex * chore: cleanup --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
@@ -66,11 +66,7 @@ export class FilesystemProvider implements IStorageRepository {
|
||||
await fs.rm(folder, options);
|
||||
}
|
||||
|
||||
async removeEmptyDirs(directory: string) {
|
||||
this._removeEmptyDirs(directory, false);
|
||||
}
|
||||
|
||||
private async _removeEmptyDirs(directory: string, self: boolean) {
|
||||
async removeEmptyDirs(directory: string, self: boolean = false) {
|
||||
// lstat does not follow symlinks (in contrast to stat)
|
||||
const stats = await fs.lstat(directory);
|
||||
if (!stats.isDirectory()) {
|
||||
@@ -78,7 +74,7 @@ export class FilesystemProvider implements IStorageRepository {
|
||||
}
|
||||
|
||||
const files = await fs.readdir(directory);
|
||||
await Promise.all(files.map((file) => this._removeEmptyDirs(path.join(directory, file), true)));
|
||||
await Promise.all(files.map((file) => this.removeEmptyDirs(path.join(directory, file), true)));
|
||||
|
||||
if (self) {
|
||||
const updated = await fs.readdir(directory);
|
||||
|
||||
Reference in New Issue
Block a user