UNPKG

@storybooker/azure

Version:

StoryBooker Adapter for interacting with Azure services.

56 lines (54 loc) 2.53 kB
import { SERVICE_NAME } from "@storybooker/core/constants"; //#region src/cosmos-db.ts var AzureCosmosDatabaseService = class { #db; constructor(client, dbName = SERVICE_NAME) { this.init = async (options) => { await this.#db.client.databases.createIfNotExists({ id: this.#db.id }, { abortSignal: options.abortSignal }); }; this.listCollections = async (options) => { return (await this.#db.containers.readAll({ abortSignal: options.abortSignal }).fetchAll()).resources.map((resource) => resource.id); }; this.createCollection = async (collectionId, options) => { await this.#db.containers.create({ id: collectionId }, { abortSignal: options.abortSignal }); }; this.hasCollection = async (collectionId, options) => { try { return !!(await this.#db.container(collectionId).read({ abortSignal: options.abortSignal })).resource; } catch { return false; } }; this.deleteCollection = async (collectionId, options) => { await this.#db.container(collectionId).delete({ abortSignal: options.abortSignal }); }; this.listDocuments = async (collectionId, _listOptions, options) => { return (await this.#db.container(collectionId).items.readAll({ abortSignal: options.abortSignal }).fetchAll()).resources; }; this.getDocument = async (collectionId, documentId, options) => { const document = (await this.#db.container(collectionId).item(documentId).read({ abortSignal: options.abortSignal })).resource; document.id = documentId; return document; }; this.createDocument = async (collectionId, documentData, options) => { await this.#db.container(collectionId).items.create(documentData, { abortSignal: options.abortSignal }); }; this.hasDocument = async (collectionId, documentId, options) => { return !!(await this.#db.container(collectionId).item(documentId).read({ abortSignal: options.abortSignal })).resource; }; this.deleteDocument = async (collectionId, documentId, options) => { await this.#db.container(collectionId).item(documentId).delete({ abortSignal: options.abortSignal }); }; this.updateDocument = async (collectionId, documentId, documentData, options) => { await this.#db.container(collectionId).item(documentId).patch({ operations: Object.entries(documentData).map(([key, value]) => ({ op: "replace", path: `/${key}`, value })) }, { abortSignal: options.abortSignal }); }; this.#db = client.database(dbName); } }; //#endregion export { AzureCosmosDatabaseService }; //# sourceMappingURL=cosmos-db.js.map