UNPKG

@axiomhq/js

Version:

The official javascript bindings for the Axiom API

68 lines (52 loc) 1.88 kB
import HTTPClient from './httpClient.js'; export namespace datasets { export const TimestampField = '_time'; export interface Dataset { id: number; name: string; description?: string; who?: string; created: string; } export interface Field { name: string; description: string; type: string; unit: string; hidden: boolean; } export interface TrimResult {} export interface CreateRequest { name: string; description?: string; } export interface CreateOptions { referrer?: string; } export interface UpdateRequest { description: string; } interface TrimRequest { maxDuration: string; } export class Service extends HTTPClient { private readonly localPath = '/v1/datasets'; list = (): Promise<Dataset[]> => this.client.get(this.localPath); get = (id: string): Promise<Dataset> => this.client.get(this.localPath + '/' + id); create = (req: CreateRequest, opts?: CreateOptions): Promise<Dataset> => { const params = new URLSearchParams(); params.set('referrer', opts?.referrer ?? ''); let path = `/v2/datasets?${params.toString()}`; return this.client.post(path, { body: JSON.stringify(req) }); }; update = (id: string, req: UpdateRequest): Promise<Dataset> => this.client.put(this.localPath + '/' + id, { body: JSON.stringify(req) }); delete = (id: string): Promise<Response> => this.client.delete(this.localPath + '/' + id); trim = (id: string, maxDurationStr: string): Promise<TrimResult> => { // Go's 'time.Duration' uses nanoseconds as its base unit. So parse the // duration string and convert to nanoseconds. 1ms = 1000000ns. const req: TrimRequest = { maxDuration: maxDurationStr }; return this.client.post(this.localPath + '/' + id + '/trim', { body: JSON.stringify(req) }); }; } }