Git Product home page Git Product logo

cosmosdb-query's Introduction

cosmosdb-query

A SQL parser and executer for Cosmos DB.

const { default: query } = require("@zeit/cosmosdb-query");

const items = [
  { id: "foo" },
  { id: "bar" }
];

const { result } = query("SELECT * FROM c WHERE c.id = @id")
  .exec(items, {
    parameters: [{ name: "@id", value: "foo" }]
  });
console.log(result); // [ { id: "foo" } ]

query(sql)

  • sql <string>
  • Returns: <Query>
const q = query("SELECT * FROM c")

Class: Query

q.exec(items[, options])

  • items <Object[]> | <null>
  • options <Object>
    • parameters <Object[]> The parameters to pass to query
    • udf <Object>
    • maxItemCount <number> The number of items to return at a time
    • continuation <Object> Continuation token
  • Returns: <Object>
    • result <Object[]> Result documents
    • continuation <Object> Continuation token for subsequent calls

Executes a query for items.

query(`SELECT VALUE udf.REGEX_MATCH("foobar", ".*bar")`).exec([], {
  udf: {
    REGEX_MATCH(input, pattern) {
      return input.match(pattern) !== null
    }
  }
});

When the maxItemCount and/or continuation options are used, all itesms have to contain the _rid field with unique values.

const items = [
  { _rid: "a", value: 1 },
  { _rid: "b", value: 2 },
  { _rid: "c", value: 3 }
];
const q = query(`SELECT * FROM c`);
const { result, continuation } = q.exec(items, { maxItemCount: 2 });
console.log(result); // [ { _rid: "a", value: 1 }, { _rid: "b", value: 2 } ]

const { result: result2 } = q.exec(items, { maxItemCount: 2, continuation });
console.log(result2); // [ { _rid: "c", value: 3 } ]

q.containsPartitionKeys(keys)

  • keys <string[]>
  • Returns: <boolean>

Determines whether query may contain partition keys.

const q = query("SELECT * FROM c WHERE c.id = 1");
if (!q.containsPartitionKeys(["/key"])) {
  throw new Error("query doesn't contain partition keys");
}

q.ast

  • <Object>

The AST object of query.

Class: SyntaxError

const { default: query, SyntaxError } = require("@zeit/cosmosdb-query");

try {
  query("INVALID SELECT").exec(items);
} catch (err) {
  if (err instanceof SyntaxError) {
    console.error(err);
  }
  throw err;
}

Supported queries

All queries are supported except spatial functions ST_ISVALID and ST_ISVALIDDETAILED.

The spatial functions ST_INTERSECTS, ST_WITHIN, and ST_DISTANCE are supported; use parameters to pass in GeoJSON as strings. Items in collections that are GeoJSON are expected to be of type string.

cosmosdb-query's People

Contributors

nkzawa avatar dependabot[bot] avatar lossyrob avatar olliv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.