@uwdata/mosaic-core
Version:
Scalable and extensible linked data views.
37 lines • 1.22 kB
JavaScript
import { decodeIPC } from '../util/decode-ipc.js';
/**
* Connect to a DuckDB server over an HTTP REST interface.
* @param options Connector options.
* @param options.uri The URI for the DuckDB REST server.
* @param options.ipc Arrow IPC extraction options.
* @returns A connector instance.
*/
export function restConnector(options) {
return new RestConnector(options);
}
export class RestConnector {
_uri;
_ipc;
constructor({ uri = 'http://localhost:3000/', ipc = undefined } = {}) {
this._uri = uri;
this._ipc = ipc;
}
async query(query) {
const req = fetch(this._uri, {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'omit',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(query)
});
const res = await req;
if (!res.ok) {
throw new Error(`Query failed with HTTP status ${res.status}: ${await res.text()}`);
}
return query.type === 'exec' ? req
: query.type === 'arrow' ? decodeIPC(await res.arrayBuffer(), this._ipc)
: res.json();
}
}
//# sourceMappingURL=rest.js.map