CosmosDB Query Builder
An yet another CosmosDB(DocumentDB) query builder which inspired by SQL::Format.
SYNOPSIS
Pass the format, a table name, and your binding parameters.
const builder = ;const querySpec = builder; console;/* { query: 'SELECT TOP @_top c.id, c.age FROM c WHERE ( c.id = @id588 ) ORDER BY c.createdAt desc', parameters: [ { name: '@_top', value: 20 }, { name: '@id588', value: '200' } ] }*/ const queryIterator = thisdocumentClient;// Enjoy!
Operators
%l
Limit (means TOP
).
builder;// 'SELECT TOP @_top * FROM c'
%c
Columns which processed "table" prefix.
builder;// 'SELECT c.id, c.age FROM c'
You can use any functions (set as func
due to reserved word).
builder;// 'SELECT COUNT(1) count FROM c' builder;// 'SELECT c.id, IS_DEFINED(c.viewed) viewed FROM c'
%t
Replace table name. Unfortunately, currently there is almost no meaning!
builder;// 'SELECT * FROM c'
%w
Where clauses. You can specify it various ways.
Also there will be added "table" prefix.
Simplest one:
builder;// 'SELECT * FROM c WHERE c.id = "AndersonFamily"'
Specify operator:
builder;// 'SELECT * FROM c WHERE c.id > 1000'
Specify type (default: string):
builder;// 'SELECT * FROM c WHERE c.id = "1000"'
Functions (set as func
due to reserved word):
builder;// 'SELECT * FROM c WHERE NOT IS_DEFINED(c.viewed)'
AND/OR (Can be nest):
builder;// 'SELECT * FROM c WHERE c.id = "1000" OR age = "20"'
%o
Order options. A default sort order is desc
.
builder;// 'SELECT * FROM c ORDER BY c.createdAt DESC
NOTES
- Currently JOIN and GROUP options is not supported (Welcome to your PR!)