@storybooker/azure
Version:
StoryBooker Adapter for interacting with Azure services.
58 lines (56 loc) • 2.77 kB
JavaScript
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
let __storybooker_core_constants = require("@storybooker/core/constants");
__storybooker_core_constants = require_rolldown_runtime.__toESM(__storybooker_core_constants);
//#region src/cosmos-db.ts
var AzureCosmosDatabaseService = class {
#db;
constructor(client, dbName = __storybooker_core_constants.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
exports.AzureCosmosDatabaseService = AzureCosmosDatabaseService;
//# sourceMappingURL=cosmos-db.cjs.map