Skip to content

Commit 5a1d648

Browse files
authored
Merge pull request #98 from apisearch-io/feature/result-metadata
Added metadata in result
2 parents 143547b + 5ce47a2 commit 5a1d648

File tree

9 files changed

+98
-29
lines changed

9 files changed

+98
-29
lines changed

dist/apisearch.js

Lines changed: 22 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/apisearch.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/apisearch.min.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

dist/apisearch.min.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

lib/Result/Result.d.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export declare class Result {
1414
private totalHits;
1515
private itemsGroupedByTypeCache;
1616
private subresults;
17+
private metadata;
1718
/**
1819
* Constructor
1920
*
@@ -23,19 +24,16 @@ export declare class Result {
2324
*/
2425
constructor(queryUUID: string, totalItems: number, totalHits: number);
2526
/**
26-
* Create
27-
*
2827
* @param queryUUID
2928
* @param totalItems
3029
* @param totalHits
3130
* @param aggregations
3231
* @param suggestions
3332
* @param items
3433
* @param autocomplete
35-
*
36-
* @returns {Result}
34+
* @param metadata
3735
*/
38-
static create(queryUUID: string, totalItems: number, totalHits: number, aggregations: ResultAggregations, suggestions: string[], items: Item[], autocomplete?: string | null): Result;
36+
static create(queryUUID: string, totalItems: number, totalHits: number, aggregations: ResultAggregations, suggestions: string[], items: Item[], autocomplete?: string | null, metadata?: any): Result;
3937
/**
4038
* Create multi results
4139
*
@@ -146,6 +144,14 @@ export declare class Result {
146144
* @return Object
147145
*/
148146
getSubresults(): Object;
147+
/**
148+
* @return any
149+
*/
150+
getMetadata(): any;
151+
/**
152+
* @param name
153+
*/
154+
getMetadataValue(name: string): any;
149155
/**
150156
* to array
151157
*

lib/Result/Result.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,30 @@ var Result = /** @class */ (function () {
1919
this.autocomplete = null;
2020
this.suggestions = [];
2121
this.subresults = {};
22+
this.metadata = {};
2223
this.queryUUID = queryUUID;
2324
this.totalItems = totalItems;
2425
this.totalHits = totalHits;
2526
}
2627
/**
27-
* Create
28-
*
2928
* @param queryUUID
3029
* @param totalItems
3130
* @param totalHits
3231
* @param aggregations
3332
* @param suggestions
3433
* @param items
3534
* @param autocomplete
36-
*
37-
* @returns {Result}
35+
* @param metadata
3836
*/
39-
Result.create = function (queryUUID, totalItems, totalHits, aggregations, suggestions, items, autocomplete) {
37+
Result.create = function (queryUUID, totalItems, totalHits, aggregations, suggestions, items, autocomplete, metadata) {
4038
if (autocomplete === void 0) { autocomplete = null; }
39+
if (metadata === void 0) { metadata = {}; }
4140
var result = new Result(queryUUID, totalItems, totalHits);
4241
result.aggregations = aggregations;
4342
result.suggestions = suggestions;
4443
result.items = items;
4544
result.autocomplete = autocomplete;
45+
result.metadata = metadata;
4646
return result;
4747
};
4848
/**
@@ -215,6 +215,19 @@ var Result = /** @class */ (function () {
215215
Result.prototype.getSubresults = function () {
216216
return this.subresults;
217217
};
218+
/**
219+
* @return any
220+
*/
221+
Result.prototype.getMetadata = function () {
222+
return this.metadata;
223+
};
224+
/**
225+
* @param name
226+
*/
227+
Result.prototype.getMetadataValue = function (name) {
228+
var _a;
229+
return (_a = this.metadata[name]) !== null && _a !== void 0 ? _a : null;
230+
};
218231
/**
219232
* to array
220233
*
@@ -232,7 +245,8 @@ var Result = /** @class */ (function () {
232245
suggests: this.suggestions,
233246
autocomplete: this.autocomplete === null
234247
? undefined
235-
: this.autocomplete
248+
: this.autocomplete,
249+
metadata: this.metadata
236250
};
237251
if (this.subresults instanceof Object &&
238252
Object.keys(this.subresults).length) {
@@ -266,7 +280,9 @@ var Result = /** @class */ (function () {
266280
? array.items.map(function (itemAsArray) { return Item_1.Item.createFromArray(itemAsArray); })
267281
: [], array.autocomplete === undefined
268282
? null
269-
: array.autocomplete);
283+
: array.autocomplete, array.metadata === undefined
284+
? {}
285+
: array.metadata);
270286
/**
271287
* Subqueries
272288
*/

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "apisearch",
3-
"version": "0.3.14",
3+
"version": "0.3.15",
44
"description": "Javascript client for Apisearch.",
55
"main": "lib/index.js",
66
"types": "lib/index.d.ts",

src/Result/Result.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export class Result {
1515
private totalHits: number;
1616
private itemsGroupedByTypeCache: any;
1717
private subresults: any = {};
18+
private metadata: any = {};
1819

1920
/**
2021
* Constructor
@@ -34,17 +35,14 @@ export class Result {
3435
}
3536

3637
/**
37-
* Create
38-
*
3938
* @param queryUUID
4039
* @param totalItems
4140
* @param totalHits
4241
* @param aggregations
4342
* @param suggestions
4443
* @param items
4544
* @param autocomplete
46-
*
47-
* @returns {Result}
45+
* @param metadata
4846
*/
4947
public static create(
5048
queryUUID: string,
@@ -54,6 +52,7 @@ export class Result {
5452
suggestions: string[],
5553
items: Item[],
5654
autocomplete: string|null = null,
55+
metadata: any = {},
5756
): Result {
5857
const result = new Result(
5958
queryUUID,
@@ -65,6 +64,7 @@ export class Result {
6564
result.suggestions = suggestions;
6665
result.items = items;
6766
result.autocomplete = autocomplete;
67+
result.metadata = metadata;
6868

6969
return result;
7070
}
@@ -265,6 +265,22 @@ export class Result {
265265
return this.subresults;
266266
}
267267

268+
/**
269+
* @return any
270+
*/
271+
public getMetadata(): any
272+
{
273+
return this.metadata;
274+
}
275+
276+
/**
277+
* @param name
278+
*/
279+
public getMetadataValue(name: string): any
280+
{
281+
return this.metadata[name] ?? null;
282+
}
283+
268284
/**
269285
* to array
270286
*
@@ -283,6 +299,7 @@ export class Result {
283299
autocomplete: this.autocomplete === null
284300
? undefined
285301
: this.autocomplete,
302+
metadata: this.metadata,
286303
};
287304

288305
if (
@@ -329,6 +346,9 @@ export class Result {
329346
array.autocomplete === undefined
330347
? null
331348
: array.autocomplete,
349+
array.metadata === undefined
350+
? {}
351+
: array.metadata,
332352
);
333353

334354
/**

test/Result/Result.test.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ describe('Result/', () => {
2727
expect(result.getSuggestions().length).to.be.equal(0);
2828
expect(result.getAggregations()).to.be.null;
2929
expect(result.getAutocomplete()).to.be.null;
30+
expect(result.getMetadata()).to.be.deep.equal({});
3031

3132
result = HttpHelper.emulateHttpTransport(result);
3233
expect(result.getQueryUUID()).to.be.equal('123');
@@ -37,6 +38,7 @@ describe('Result/', () => {
3738
expect(result.getSuggestions().length).to.be.equal(0);
3839
expect(result.getAggregations()).to.be.null;
3940
expect(result.getAutocomplete()).to.be.null;
41+
expect(result.getMetadata()).to.be.deep.equal({});
4042
});
4143
});
4244

@@ -212,7 +214,11 @@ describe('Result/', () => {
212214
'type': 'product'
213215
},
214216
}
215-
]
217+
],
218+
'metadata': {
219+
'a': 'b',
220+
'c': 123
221+
},
216222
};
217223
let result = Result.createFromArray(resultAsArray);
218224
expect(result.getQueryUUID()).to.be.equal('123');
@@ -222,6 +228,11 @@ describe('Result/', () => {
222228
expect(result.getSuggestions()).to.be.deep.equal(['sug1', 'sug2']);
223229
expect(result.getItems().length).to.be.equal(2);
224230
expect(result.getFirstItem().getType()).to.be.equal('product');
231+
expect(result.getMetadata()).to.be.deep.equal({'a': 'b', 'c': 123});
232+
expect(result.getMetadataValue('a')).to.be.equal('b');
233+
expect(result.getMetadataValue('c')).to.be.equal(123);
234+
expect(result.getMetadataValue('X')).to.be.null;
235+
225236
result = HttpHelper.emulateHttpTransport(result);
226237
expect(result.getQueryUUID()).to.be.equal('123');
227238
expect(result.getTotalItems()).to.be.equal(10);
@@ -230,6 +241,10 @@ describe('Result/', () => {
230241
expect(result.getSuggestions()).to.be.deep.equal(['sug1', 'sug2']);
231242
expect(result.getItems().length).to.be.equal(2);
232243
expect(result.getFirstItem().getType()).to.be.equal('product');
244+
expect(result.getMetadata()).to.be.deep.equal({'a': 'b', 'c': 123});
245+
expect(result.getMetadataValue('a')).to.be.equal('b');
246+
expect(result.getMetadataValue('c')).to.be.equal(123);
247+
expect(result.getMetadataValue('X')).to.be.null;
233248
});
234249
});
235250

0 commit comments

Comments
 (0)