API Docs

This document is auto-generated from the core bedquilt source code, and describes the low-level SQL API of BedquiltDB.


collection_constraints

bq_add_constraints

  • params: i_coll text, i_jdoc jsonb
  • returns: boolean
  • language: plpgsql

markdown Add a set of constraints to the collection. The supplied json document should be in the form {field: constraint_spec}, for example: {"age": {"$required": true, "$notnull": true, "$type": "number"}} Valid constraints are: $required, $notnull and $type. - {$required: 1} : the field must be present in all documents - {$notnull: 1} : if the field is present, its value must not be null - {$type: '<type>'} : if the field is present and has a non-null value, then the type of that value must match the specified type. Valid types are "string", "number", "object", "array", "boolean". Returns a boolean indicating whether any of the constraints newly applied. Example: select bq_add_constraints('things', '{"name": {"$required": true}}')

bq_remove_constraints

  • params: i_coll text, i_jdoc jsonb
  • returns: boolean
  • language: plpgsql

markdown Remove constraints from collection. The supplied json document should match the spec for existing constraints. Returns True if any of the constraints were removed, False otherwise. Example: select bq_remove_constraints('things', '{"name": {"$required": true}}')

bq_list_constraints

  • params: i_coll text
  • returns: setof text
  • language: plpgsql

markdown Get a list of text descriptions of constraints on this collection. Example: select bq_list_constraints('orders')

collection_ops

bq_create_collection

  • params: i_coll text
  • returns: BOOLEAN
  • language: plpgsql

markdown Create a collection with the specified name. Example: select bq_create_collection('orders');

bq_list_collections

  • params: None
  • returns: table(collection_name text)
  • language: plpgsql

markdown Get a list of existing collections. This checks information_schema for tables matching the expected structure. Example: select bq_list_collections();

bq_delete_collection

  • params: i_coll text
  • returns: BOOLEAN
  • language: plpgsql

markdown Delete/drop a collection. At the moment, this just drops whatever table matches the collection name. Example: select bq_delete_collection('orders');

bq_collection_exists

  • params: None
  • returns: boolean
  • language: plpgsql

markdown Check if a collection exists. Example: select bq_collection_exists('orders');

document_reads

bq_find_one

  • params: i_coll text, i_json_query jsonb, i_skip integer DEFAULT 0, i_sort jsonb DEFAULT null
  • returns: table(bq_jdoc jsonb)
  • language: plpgsql

markdown Find one document from a collection, matching a query document. Effectively the same as bq_find with limit set to 1. Params: - i_coll: collection name - i_json_query: the query document - i_skip: (optional) number of documents to skip, default 0 - i_sort: (optional) json array of sort specifications, default null Example: select bq_find_one('orders', '{"processed": false}');

bq_find_one_by_id

  • params: i_coll text, i_id text
  • returns: table(bq_jdoc jsonb)
  • language: plpgsql

markdown Find a single document from a collection, by it's `_id` property. This function is potentially faster than the equivalent call to bq_find_one with a '{"_id": "..."}' query document. Example: select bq_find_one_by_id('things', 'fa0c852e4bc5d384b5f9fde5');

bq_find

  • params: i_coll text, i_json_query jsonb, i_skip integer DEFAULT 0, i_limit integer DEFAULT null, i_sort jsonb DEFAULT null
  • returns: table(bq_jdoc jsonb)
  • language: plpgsql

markdown Find documents from a collection, matching a query document. Params: - i_coll: collection name - i_json_query: the query document - i_skip: (optional) number of documents to skip, default 0 - i_limit: (optional) number of documents to limit the result set to, - i_sort: (optional) json array of sort specifications, default null Example: select bq_find('orders', '{"processed": false}'); select bq_find('orders', '{"processed": false}', 2, 10, '[{"orderTime": -1}]');

bq_count

  • params: i_coll text, i_doc jsonb
  • returns: integer
  • language: plpgsql

markdown Count documents in a collection, matching a query document. Example: select bq_countt('orders', '{"processed": true}')

bq_distinct

  • params: i_coll text, i_key_path text
  • returns: table(val jsonb)
  • language: plpgsql

markdown Get a sequence of the distinct values present in the collection for a given key, Example: select bq_distinct('people', 'address.city')

document_writes

bq_insert

  • params: i_coll text, i_jdoc jsonb
  • returns: text
  • language: plpgsql

markdown Insert a document into a collection. Raises an error if a document already exists with the same `_id` field. If the document doesn't contain an `_id` field, then one will be randomly generated Example: select bq_insert('things', '{"name": "wrench"}');

bq_remove

  • params: i_coll text, i_jdoc jsonb
  • returns: setof integer
  • language: plpgsql

markdown Remove documents from a collection, matching a query document. Returns count of deleted documents. Example: select bq_remove('orders', '{"cancelled": true}');

bq_remove_one

  • params: i_coll text, i_jdoc jsonb
  • returns: setof integer
  • language: plpgsql

markdown Remove a single document from a collection, matching a query document. The first document to match the query will be removed. Returns count of deleted documents, either one or zero. Example: select bq_remove_one('orders', '{"cancelled": true}');

bq_remove_one_by_id

  • params: i_coll text, i_id text
  • returns: setof integer
  • language: plpgsql

markdown Remove a single document from a collection, by its `_id` field. Returns count of deleted documents, either one or zero. Example: select bq_remove_one_by_id('orders', '4d733fb148e7d89f7c569655');

bq_remove_many_by_ids

  • params: i_coll text, i_ids jsonb
  • returns: setof integer
  • language: plpgsql

markdown Remove many documents, by their `_id` fields.

bq_save

  • params: i_coll text, i_jdoc jsonb
  • returns: text
  • language: plpgsql

markdown Save a document to a collection. Similar to `bq_insert`, but will overwrite an existing document if one with a matching `_id` field is found. Can be used to either create new documents or update existing documents. Example: select bq_save('things', '{"_id": "abc", "name": "wrench"}');

utilities

bq_util_generate_id

  • params: None
  • returns: char(24)
  • language: plpgsql

markdown Generate a random string ID. Used by the document write functions to populate the '_id' field if it is missing.