1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2025-01-14 14:43:17 +08:00
pigallery2/backend/model/memory/GalleryManager.ts

31 lines
1.4 KiB
TypeScript
Raw Normal View History

2018-03-30 15:30:30 -04:00
import {DirectoryDTO} from '../../../common/entities/DirectoryDTO';
2018-11-28 23:49:33 +01:00
import {IGalleryManager, RandomQuery} from '../interfaces/IGalleryManager';
2018-03-30 15:30:30 -04:00
import * as path from 'path';
import * as fs from 'fs';
import {DiskManager} from '../DiskManger';
import {ProjectPath} from '../../ProjectPath';
import {Config} from '../../../common/config/private/Config';
import {ReIndexingSensitivity} from '../../../common/config/private/IPrivateConfig';
import {PhotoDTO} from '../../../common/entities/PhotoDTO';
2016-04-22 13:23:44 +02:00
2016-05-09 17:04:56 +02:00
export class GalleryManager implements IGalleryManager {
2016-04-22 13:23:44 +02:00
public listDirectory(relativeDirectoryName: string, knownLastModified?: number, knownLastScanned?: number): Promise<DirectoryDTO> {
// If it seems that the content did not changed, do not work on it
2017-07-19 20:47:09 +02:00
if (knownLastModified && knownLastScanned) {
const stat = fs.statSync(path.join(ProjectPath.ImageFolder, relativeDirectoryName));
const lastModified = Math.max(stat.ctime.getTime(), stat.mtime.getTime());
2017-07-27 23:10:16 +02:00
if (Date.now() - knownLastScanned <= Config.Server.indexing.cachedFolderTimeout &&
lastModified === knownLastModified &&
2017-07-27 23:10:16 +02:00
Config.Server.indexing.reIndexingSensitivity < ReIndexingSensitivity.high) {
return Promise.resolve(null);
2017-07-19 20:47:09 +02:00
}
}
2017-07-03 19:17:49 +02:00
return DiskManager.scanDirectory(relativeDirectoryName);
}
2016-04-22 13:23:44 +02:00
2018-11-28 23:49:33 +01:00
getRandomPhoto(queryFilter: RandomQuery): Promise<PhotoDTO> {
2018-11-04 19:28:32 +01:00
throw new Error('Random media is not supported without database');
}
2017-07-03 19:17:49 +02:00
}