Skip to content

Commit 2730284

Browse files
authored
feat(loki): change and improve nested property support (#81)
1 parent 1a49470 commit 2730284

16 files changed

+826
-730
lines changed

packages/common/types.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ export interface StorageAdapter {
1515
exportDatabase?(dbname: string, dbref: Loki): Promise<void>;
1616
}
1717

18-
export type Doc<T extends object = object> = T & { $loki: number; meta: any; };
18+
export type Doc<T extends object = object> = T & {
19+
$loki: number; meta?: {
20+
created: number;
21+
revision: number;
22+
version: number,
23+
updated?: number;
24+
};
25+
};
1926

2027
export interface Dict<T> {
2128
[index: string]: T;

packages/full-text-search/spec/generic/full_text_search.spec.ts

+33
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,39 @@ describe("full-text search", () => {
5858
.toBe(2);
5959
});
6060

61+
it("nested", () => {
62+
const coll2 = db.addCollection<{ user: { name: string, id: number } }, { "user.name": string, "user.id": number }>("coll", {
63+
nestedProperties: ["user.name", "user.id"],
64+
fullTextSearch: [{field: "user.name"}]
65+
});
66+
for (let i of coll.find()) {
67+
coll2.insert({user: i});
68+
}
69+
70+
let query: Query = {query: {type: "fuzzy", field: "user.name", value: "quak", fuzziness: 1}};
71+
expect(coll2.find({"$fts": query}).length).toBe(3);
72+
73+
expect(
74+
coll2.find({"$fts": query})).not.toEqual(
75+
coll2.find({"user.id": {"$in": [1, 2, 3]}}));
76+
77+
expect(
78+
coll2
79+
.chain()
80+
.find({"user.id": {"$in": [1, 2, 3]}})
81+
.find({"$fts": query})
82+
.data().length)
83+
.toBe(2);
84+
85+
expect(
86+
coll2
87+
.chain()
88+
.find({"$fts": query})
89+
.find({"user.id": {"$in": [1, 2, 3]}})
90+
.data().length)
91+
.toBe(2);
92+
});
93+
6194
it("update", () => {
6295
coll.updateWhere((user: User) => {
6396
return user.name === "quak";

packages/full-text-search/src/full_text_search.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ export class FullTextSearch {
4444
}
4545

4646
public addDocument(doc: object, id: number = doc[this._id]): void {
47-
let fieldNames = Object.keys(doc);
47+
let fieldNames = Object.keys(this._invIdxs);
4848
for (let i = 0, fieldName; i < fieldNames.length, fieldName = fieldNames[i]; i++) {
49-
if (this._invIdxs[fieldName] !== undefined) {
49+
if (doc[fieldName] !== undefined) {
5050
this._invIdxs[fieldName].insert(doc[fieldName], id);
5151
}
5252
}

0 commit comments

Comments
 (0)