1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

add querySearch() function

This commit is contained in:
Miquel A. Cabot 2022-07-14 13:28:02 +02:00
parent bbab53c7bf
commit 8b952c6b05

View File

@ -1,6 +1,30 @@
import { LoggerInstance, sleep } from '../utils'
import { Asset, DDO, ValidateMetadata } from '../@types/'
import fetch from 'cross-fetch'
export interface SearchQuery {
from?: number
size?: number
query: {
match?: {
[property: string]:
| string
| number
| boolean
| Record<string, string | number | boolean>
}
// eslint-disable-next-line camelcase
query_string?: {
[property: string]: string | number | string[] | number[] | boolean
}
// eslint-disable-next-line camelcase
simple_query_string?: {
[property: string]: string | number | string[] | number[] | boolean
}
}
sort?: { [jsonPath: string]: string }
}
export class Aquarius {
public aquariusURL
/**
@ -121,6 +145,37 @@ export class Aquarius {
}
return status
}
/**
* Search over the DDOs using a query.
* @param {SearchQuery} query Query to filter the DDOs.
* @param {AbortSignal} signal abort signal
* @return {Promise<QueryResult>}
*/
public async querySearch(query: SearchQuery, signal?: AbortSignal): Promise<any> {
const path = this.aquariusURL + '/api/aquarius/assets/query'
try {
const response = await fetch(path, {
method: 'POST',
body: JSON.stringify(query),
headers: {
'Content-Type': 'application/json'
},
signal: signal
})
if (response.ok) {
return response.json()
} else {
LoggerInstance.error('querySearch failed: ', response.status, response.statusText)
return null
}
} catch (error) {
LoggerInstance.error('Error querying metadata: ', error)
throw new Error('Error querying metadata: ', error)
}
}
}
export default Aquarius