fixing gallery indexing path errors

This commit is contained in:
Braun Patrik 2016-12-28 14:26:19 +01:00
parent d993a3275b
commit 306613260e
4 changed files with 26 additions and 22 deletions

View File

@ -1,8 +1,7 @@
language: node_js language: node_js
node_js: node_js:
- '7'
- '6' - '6'
- '4'
- '0.12'
deploy: deploy:
provider: heroku provider: heroku
api_key: api_key:

View File

@ -10,6 +10,10 @@ class ProjectPathClass {
return path.resolve(pathStr) === path.normalize(pathStr); return path.resolve(pathStr) === path.normalize(pathStr);
} }
normalizeRelative(pathStr: string) {
return path.join(pathStr, path.sep);
}
constructor() { constructor() {
this.Root = path.join(__dirname, "/../"); this.Root = path.join(__dirname, "/../");
this.ImageFolder = this.isAbsolutePath(Config.Server.imagesFolder) ? Config.Server.imagesFolder : path.join(this.Root, Config.Server.imagesFolder); this.ImageFolder = this.isAbsolutePath(Config.Server.imagesFolder) ? Config.Server.imagesFolder : path.join(this.Root, Config.Server.imagesFolder);

View File

@ -18,10 +18,9 @@ import {ProjectPath} from "../ProjectPath";
export class DiskManager { export class DiskManager {
public static scanDirectory(relativeDirectoryName: string, cb: (error: any, result: DirectoryDTO) => void) { public static scanDirectory(relativeDirectoryName: string, cb: (error: any, result: DirectoryDTO) => void) {
console.log("DiskManager: scanDirectory"); console.log("DiskManager: scanDirectory");
let directoryName = path.normalize(path.basename(relativeDirectoryName)); let directoryName = path.basename(relativeDirectoryName);
let directoryParent = path.normalize(path.join(path.dirname(relativeDirectoryName), "/")); let directoryParent = path.join(path.dirname(relativeDirectoryName), path.sep);
let absoluteDirectoryName = path.normalize(path.join(ProjectPath.ImageFolder, relativeDirectoryName)); let absoluteDirectoryName = path.join(ProjectPath.ImageFolder, relativeDirectoryName);
console.log(directoryName, directoryParent, path.dirname(relativeDirectoryName), path.join(path.dirname(relativeDirectoryName), "/"));
let directory = <DirectoryDTO>{ let directory = <DirectoryDTO>{
name: directoryName, name: directoryName,
@ -45,7 +44,7 @@ export class DiskManager {
if (fs.statSync(fullFilePath).isDirectory()) { if (fs.statSync(fullFilePath).isDirectory()) {
directory.directories.push(<DirectoryDTO>{ directory.directories.push(<DirectoryDTO>{
name: file, name: file,
path: relativeDirectoryName, path: path.join(relativeDirectoryName, path.sep),
lastUpdate: Date.now(), lastUpdate: Date.now(),
directories: [], directories: [],
photos: [] photos: []

View File

@ -6,37 +6,40 @@ import {MySQLConnection} from "./MySQLConnection";
import {DiskManager} from "../DiskManger"; import {DiskManager} from "../DiskManger";
import {PhotoEntity} from "./enitites/PhotoEntity"; import {PhotoEntity} from "./enitites/PhotoEntity";
import {Utils} from "../../../common/Utils"; import {Utils} from "../../../common/Utils";
import {ProjectPath} from "../../ProjectPath";
export class GalleryManager implements IGalleryManager { export class GalleryManager implements IGalleryManager {
public listDirectory(relativeDirectoryName, cb: (error: any, result: DirectoryDTO) => void) { public listDirectory(relativeDirectoryName, cb: (error: any, result: DirectoryDTO) => void) {
let directoryName = path.normalize(path.basename(relativeDirectoryName)); relativeDirectoryName = path.normalize(path.join("." + path.sep, relativeDirectoryName));
let directoryParent = path.normalize(path.join(path.dirname(relativeDirectoryName), "/")); let directoryName = path.basename(relativeDirectoryName);
let directoryParent = path.join(path.dirname(relativeDirectoryName), path.sep);
console.log("GalleryManager:listDirectory"); console.log("GalleryManager:listDirectory");
console.log(directoryName, directoryParent, path.dirname(relativeDirectoryName), path.join(path.dirname(relativeDirectoryName), "/")); console.log(directoryName, directoryParent, path.dirname(relativeDirectoryName), ProjectPath.normalizeRelative(path.dirname(relativeDirectoryName)));
MySQLConnection.getConnection().then(async connection => { MySQLConnection.getConnection().then(async connection => {
let dir = await connection let dir = await connection
.getRepository(DirectoryEntity) .getRepository(DirectoryEntity)
.createQueryBuilder("directory_entity") .createQueryBuilder("directory")
.where("directory_entity.name = :name AND directory_entity.path = :path", { .where("directory.name = :name AND directory.path = :path", {
name: directoryName, name: directoryName,
path: directoryParent path: directoryParent
}) })
.innerJoinAndSelect("directory_entity.directories", "directories") .leftJoinAndSelect("directory.directories", "directories")
.innerJoinAndSelect("directory_entity.photos", "photos") .leftJoinAndSelect("directory.photos", "photos")
.getOne(); .getOne();
console.log(dir);
if (dir) { if (dir) {
for (let i = 0; i < dir.photos.length; i++) { if (dir.photos) {
dir.photos[i].directory = dir; for (let i = 0; i < dir.photos.length; i++) {
dir.photos[i].metadata.keywords = <any>JSON.parse(<any>dir.photos[i].metadata.keywords); dir.photos[i].directory = dir;
dir.photos[i].metadata.cameraData = <any>JSON.parse(<any>dir.photos[i].metadata.cameraData); dir.photos[i].metadata.keywords = <any>JSON.parse(<any>dir.photos[i].metadata.keywords);
dir.photos[i].metadata.positionData = <any>JSON.parse(<any>dir.photos[i].metadata.positionData); dir.photos[i].metadata.cameraData = <any>JSON.parse(<any>dir.photos[i].metadata.cameraData);
dir.photos[i].metadata.size = <any>JSON.parse(<any>dir.photos[i].metadata.size); dir.photos[i].metadata.positionData = <any>JSON.parse(<any>dir.photos[i].metadata.positionData);
dir.photos[i].metadata.size = <any>JSON.parse(<any>dir.photos[i].metadata.size);
}
} }
return cb(null, dir); return cb(null, dir);
} }
@ -78,7 +81,6 @@ export class GalleryManager implements IGalleryManager {
await photosRepository.persist(photo); await photosRepository.persist(photo);
} }
return cb(null, parentDir); return cb(null, parentDir);