1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/backend/model/mongoose/MongoSearchManager.ts
2016-05-09 17:04:56 +02:00

47 lines
1.5 KiB
TypeScript

import {AutoCompleteItem, AutoCompeleteTypes} from "../../../common/entities/AutoCompleteItem";
import {ISearchManager} from "../ISearchManager";
import {DirectoryModel} from "./entities/DirectoryModel";
import {PhotoModel} from "./entities/PhotoModel";
export class MongoSearchManager implements ISearchManager {
constructor() {
}
autocomplete(text, cb:(error:any, result:Array<AutoCompleteItem>) => void) {
console.log("autocomplete: " + text);
let items:Array<AutoCompleteItem> = [];
PhotoModel.find({name: {$regex: text, $options: "i"}}).limit(10).select('name').exec((err, res:Array<any>) => {
if (err || !res) {
return cb(err, null);
}
items = items.concat(this.encapsulateAutoComplete(res.map(r => r.name), AutoCompeleteTypes.image));
DirectoryModel.find({
name: {
$regex: text,
$options: "i"
}
}).limit(10).select('name').exec((err, res:Array<any>) => {
if (err || !res) {
return cb(err, null);
}
items = items.concat(this.encapsulateAutoComplete(res.map(r => r.name), AutoCompeleteTypes.directory));
return cb(null, items);
});
});
}
private encapsulateAutoComplete(values:Array<string>, type:AutoCompeleteTypes) {
let res = [];
values.forEach((value)=> {
res.push(new AutoCompleteItem(value, type));
});
return res;
}
}