2020-03-09 12:39:49 +05:00
|
|
|
import fuzzysearch from "fuzzysearch";
|
|
|
|
|
var tfun = require("transfun/transfun.js").tfun;
|
|
|
|
|
if (!tfun) {
|
|
|
|
|
tfun = global.tfun;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default class Lookup {
|
2020-03-19 12:38:33 +05:00
|
|
|
/**
|
|
|
|
|
*
|
2020-04-12 11:04:30 +05:00
|
|
|
* @param {import('./index').default} db
|
2020-03-19 12:38:33 +05:00
|
|
|
*/
|
|
|
|
|
constructor(db) {
|
|
|
|
|
this._db = db;
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-26 10:24:43 +05:00
|
|
|
notes(notes, query) {
|
2020-11-16 15:00:52 +05:00
|
|
|
let contentIds = this._db.content._collection.search.searchDocs(query);
|
|
|
|
|
let noteIds = this._db.notes._collection.search.searchDocs(query);
|
|
|
|
|
return notes.filter((note) => {
|
|
|
|
|
return (
|
|
|
|
|
contentIds.findIndex((content) => note.id === content.noteId) > -1 ||
|
|
|
|
|
noteIds.findIndex((n) => n.id === note.id) > -1
|
|
|
|
|
);
|
|
|
|
|
});
|
2020-03-09 12:39:49 +05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
notebooks(array, query) {
|
2020-11-16 15:00:52 +05:00
|
|
|
const notebooksIds = this._db.notebooks._collection.search.searchDocs(
|
|
|
|
|
query
|
|
|
|
|
);
|
|
|
|
|
return tfun.filter(
|
|
|
|
|
(nb) => notebooksIds.findIndex((notebook) => notebook.id === nb.id) > -1
|
|
|
|
|
)(array);
|
2020-03-09 12:39:49 +05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
topics(array, query) {
|
|
|
|
|
return this._byTitle(array, query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tags(array, query) {
|
|
|
|
|
return this._byTitle(array, query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trash(array, query) {
|
|
|
|
|
return this._byTitle(array, query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_byTitle(array, query) {
|
2020-05-04 12:24:33 +05:00
|
|
|
return tfun.filter((item) => fzs(query, item.title))(array);
|
2020-03-09 12:39:49 +05:00
|
|
|
}
|
|
|
|
|
}
|
2020-05-04 12:24:33 +05:00
|
|
|
|
|
|
|
|
function fzs(query, text) {
|
|
|
|
|
return fuzzysearch(query.toLowerCase(), text.toLowerCase());
|
|
|
|
|
}
|