@internetarchive/search-service
Advanced tools
Comparing version 0.3.2-alpha.1 to 0.3.2-alpha.2
@@ -1,3 +0,3 @@ | ||
import { SearchParamURLGenerator } from '../search-params'; | ||
import { SearchServiceError, SearchServiceErrorType, } from '../search-service-error'; | ||
import { SearchParamURLGenerator } from '../search-param-url-generator'; | ||
/** | ||
@@ -4,0 +4,0 @@ * The DefaultSearchBackend performs a `window.fetch` request to archive.org |
@@ -30,29 +30,1 @@ export interface AggregateSearchParam { | ||
} | ||
export declare class SearchParamURLGenerator { | ||
/** | ||
* Generates a query parameter from the given aggregate search params | ||
* | ||
* Example: | ||
* | ||
* [ | ||
* { | ||
* "terms": { | ||
* "field": "collection", | ||
* "size":10 | ||
* } | ||
* }, | ||
* { | ||
* "terms": { | ||
* "field": "subjectSorter", | ||
* "size": 10 | ||
* } | ||
* } | ||
* ] | ||
* | ||
* @returns string | undefined} | ||
* @memberof AggregateSearchParams | ||
*/ | ||
static aggregateSearchParamsAsString(aggregateSearchParams: AggregateSearchParams): string | undefined; | ||
static sortParamsAsString(sortParams: SortParam): string; | ||
static generateURLSearchParams(searchParams: SearchParams): URLSearchParams; | ||
} |
@@ -1,69 +0,2 @@ | ||
export class SearchParamURLGenerator { | ||
/** | ||
* Generates a query parameter from the given aggregate search params | ||
* | ||
* Example: | ||
* | ||
* [ | ||
* { | ||
* "terms": { | ||
* "field": "collection", | ||
* "size":10 | ||
* } | ||
* }, | ||
* { | ||
* "terms": { | ||
* "field": "subjectSorter", | ||
* "size": 10 | ||
* } | ||
* } | ||
* ] | ||
* | ||
* @returns string | undefined} | ||
* @memberof AggregateSearchParams | ||
*/ | ||
static aggregateSearchParamsAsString(aggregateSearchParams) { | ||
if (aggregateSearchParams.advancedParams) { | ||
const params = aggregateSearchParams.advancedParams.map(param => { | ||
return { | ||
terms: param, | ||
}; | ||
}); | ||
const stringified = JSON.stringify(params); | ||
return stringified; | ||
} | ||
if (aggregateSearchParams.simpleParams) { | ||
return aggregateSearchParams.simpleParams.join(','); | ||
} | ||
} | ||
static sortParamsAsString(sortParams) { | ||
return `${sortParams.field} ${sortParams.direction}`; | ||
} | ||
static generateURLSearchParams(searchParams) { | ||
const params = new URLSearchParams(); | ||
params.append('q', searchParams.query); | ||
params.append('output', 'json'); | ||
if (searchParams.rows) { | ||
params.append('rows', String(searchParams.rows)); | ||
} | ||
if (searchParams.page) { | ||
params.append('page', String(searchParams.page)); | ||
} | ||
if (searchParams.fields) { | ||
params.append('fl', searchParams.fields.join(',')); | ||
} | ||
if (searchParams.sort) { | ||
const sortStrings = searchParams.sort.map(sort => this.sortParamsAsString(sort)); | ||
params.append('sort', sortStrings.join(',')); | ||
} | ||
const aggregations = searchParams.aggregations; | ||
if (aggregations) { | ||
const aggString = this.aggregateSearchParamsAsString(aggregations); | ||
if (aggString) { | ||
params.append('user_aggs', aggString); | ||
} | ||
} | ||
return params; | ||
} | ||
} | ||
export {}; | ||
//# sourceMappingURL=search-params.js.map |
import { expect } from '@open-wc/testing'; | ||
import { SearchParamURLGenerator, } from '../src/search-params'; | ||
import { SearchParamURLGenerator } from '../src/search-param-url-generator'; | ||
describe('SearchParams', () => { | ||
@@ -4,0 +4,0 @@ it('can be instantiated with just a query', async () => { |
{ | ||
"name": "@internetarchive/search-service", | ||
"version": "0.3.2-alpha.1", | ||
"version": "0.3.2-alpha.2", | ||
"description": "A search service for the Internet Archive", | ||
@@ -5,0 +5,0 @@ "license": "AGPL-3.0-only", |
/* eslint-disable @typescript-eslint/no-explicit-any */ | ||
import { SearchBackendInterface } from './search-backend-interface'; | ||
import { SearchParams, SearchParamURLGenerator } from '../search-params'; | ||
import { SearchParams } from '../search-params'; | ||
import { Result } from '@internetarchive/result-type'; | ||
@@ -9,2 +9,3 @@ import { | ||
} from '../search-service-error'; | ||
import { SearchParamURLGenerator } from '../search-param-url-generator'; | ||
@@ -11,0 +12,0 @@ /** |
@@ -40,83 +40,1 @@ export interface AggregateSearchParam { | ||
} | ||
export class SearchParamURLGenerator { | ||
/** | ||
* Generates a query parameter from the given aggregate search params | ||
* | ||
* Example: | ||
* | ||
* [ | ||
* { | ||
* "terms": { | ||
* "field": "collection", | ||
* "size":10 | ||
* } | ||
* }, | ||
* { | ||
* "terms": { | ||
* "field": "subjectSorter", | ||
* "size": 10 | ||
* } | ||
* } | ||
* ] | ||
* | ||
* @returns string | undefined} | ||
* @memberof AggregateSearchParams | ||
*/ | ||
static aggregateSearchParamsAsString( | ||
aggregateSearchParams: AggregateSearchParams | ||
): string | undefined { | ||
if (aggregateSearchParams.advancedParams) { | ||
const params = aggregateSearchParams.advancedParams.map(param => { | ||
return { | ||
terms: param, | ||
}; | ||
}); | ||
const stringified = JSON.stringify(params); | ||
return stringified; | ||
} | ||
if (aggregateSearchParams.simpleParams) { | ||
return aggregateSearchParams.simpleParams.join(','); | ||
} | ||
} | ||
static sortParamsAsString(sortParams: SortParam): string { | ||
return `${sortParams.field} ${sortParams.direction}`; | ||
} | ||
static generateURLSearchParams(searchParams: SearchParams): URLSearchParams { | ||
const params: URLSearchParams = new URLSearchParams(); | ||
params.append('q', searchParams.query); | ||
params.append('output', 'json'); | ||
if (searchParams.rows) { | ||
params.append('rows', String(searchParams.rows)); | ||
} | ||
if (searchParams.page) { | ||
params.append('page', String(searchParams.page)); | ||
} | ||
if (searchParams.fields) { | ||
params.append('fl', searchParams.fields.join(',')); | ||
} | ||
if (searchParams.sort) { | ||
const sortStrings = searchParams.sort.map(sort => | ||
this.sortParamsAsString(sort) | ||
); | ||
params.append('sort', sortStrings.join(',')); | ||
} | ||
const aggregations = searchParams.aggregations; | ||
if (aggregations) { | ||
const aggString = this.aggregateSearchParamsAsString(aggregations); | ||
if (aggString) { | ||
params.append('user_aggs', aggString); | ||
} | ||
} | ||
return params; | ||
} | ||
} |
import { expect } from '@open-wc/testing'; | ||
import { SearchParamURLGenerator } from '../src/search-param-url-generator'; | ||
import { | ||
AggregateSearchParams, | ||
SearchParams, | ||
SearchParamURLGenerator, | ||
SortParam, | ||
} from '../src/search-params'; | ||
import { SortParam } from '../src/search-params'; | ||
@@ -10,0 +6,0 @@ describe('SearchParams', () => { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
364785
157
5166