WIDE

Store any unstructured JSON data. Retrieve it with an expressive and efficient query system.

WIDE is a library and service hosted on Val Town. Authenticate and use it with your Val Town credentials, or fork it and connect it to your own Clickhouse Instance.

(read more about wide events)

import { ValSession } from 'https://esm.town/v/maxm/valSession';
import { Wide } from 'https://esm.town/v/maxm/wide';

// Use your Val Town API Token to create a session
const wide = new Wide(await ValSession.new(Deno.env.get("valtown")))

// Write any data.
await wide.write([
  { user: {id: 1, name: 'Alice', email: 'alice@example.com' }},
  { user: {id: 2, name: 'Bob', email: 'bob@example.com' }},
  { user: {id: 3, name: 'Charlie', email: 'charlie@example.com' }},
]);

await wide.fields("user.")
// => [
//  { fieldName: "user.email", fieldType: "string", count: 3 },
//  { fieldName: "user.id", fieldType: "number", count: 3 },
//  { fieldName: "user.name", fieldType: "string", count: 3 }
// ]

await wide.values("user.email") 
// [
//   { value: "bob@example.com", count: 1 },
//   { value: "charlie@example.com", count: 1 },
//   { value: "alice@example.com", count: 1 }
// ]

await wide.search({
    start: new Date(Date.now() - 1000 * 60 * 10),
    end: new Date(),
    filters: [{ fieldName: "user.name", operator: "equals", value: "Alice" }],
})
// [{ user: { name: "Alice", email: "alice@example.com", id: 1 } }];