mirror of
https://github.com/xuthus83/pigallery2.git
synced 2024-11-03 21:04:03 +08:00
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import {DirectoryDTO} from '../../common/entities/DirectoryDTO';
|
|
import {Logger} from '../Logger';
|
|
import {Config} from '../../common/config/private/Config';
|
|
import {DiskManagerTH} from './threading/ThreadPool';
|
|
import {DiskMangerWorker} from './threading/DiskMangerWorker';
|
|
|
|
|
|
const LOG_TAG = '[DiskManager]';
|
|
|
|
export class DiskManager {
|
|
static threadPool: DiskManagerTH = null;
|
|
|
|
public static init() {
|
|
if (Config.Server.threading.enable === true) {
|
|
DiskManager.threadPool = new DiskManagerTH(1);
|
|
}
|
|
}
|
|
|
|
public static async scanDirectory(relativeDirectoryName: string): Promise<DirectoryDTO> {
|
|
Logger.silly(LOG_TAG, 'scanning directory:', relativeDirectoryName);
|
|
|
|
|
|
let directory: DirectoryDTO = null;
|
|
|
|
if (Config.Server.threading.enable === true) {
|
|
directory = await DiskManager.threadPool.execute(relativeDirectoryName);
|
|
} else {
|
|
directory = await DiskMangerWorker.scanDirectory(relativeDirectoryName);
|
|
}
|
|
const addDirs = (dir: DirectoryDTO) => {
|
|
dir.media.forEach((ph) => {
|
|
ph.directory = dir;
|
|
});
|
|
dir.directories.forEach((d) => {
|
|
addDirs(d);
|
|
});
|
|
};
|
|
addDirs(directory);
|
|
return directory;
|
|
}
|
|
|
|
}
|