nodejs/linux/cosmoslib.js (76 lines of code) (raw):
const _ = require("lodash");
const CosmosClient = require("@azure/cosmos").CosmosClient;
const endpoint = process.env.COSMOS_ENDPOINT;
const key = process.env.COSMOS_KEY;
let databaseId = process.env.COSMOS_DATABASE || "notes";
const client = new CosmosClient({ endpoint, key });
async function init() {
try {
const { database } = await client.databases.createIfNotExists({
id: databaseId,
});
const { container } = await database.containers.createIfNotExists({
id: databaseId,
});
} catch (err) {
console.log(err);
}
}
async function getNotes() {
const { database } = await client.databases.createIfNotExists({
id: databaseId,
});
const { container } = await database.containers.createIfNotExists({
id: databaseId,
});
const { resources } = await container.items.readAll().fetchAll();
let resp = _.map(resources, _.partialRight(_.pick, ["id", "content"]));
return resp;
}
async function writeData(note) {
const { database } = await client.databases.createIfNotExists({
id: databaseId,
});
const { container } = await database.containers.createIfNotExists({
id: databaseId,
});
const itemDef = {
id: note.id,
content: note.content,
};
await container.items.create(itemDef);
console.log(`Created item with id: ${itemDef.id}`);
}
async function deleteNote(id) {
const { database } = await client.databases.createIfNotExists({
id: databaseId,
});
const { container } = await database.containers.createIfNotExists({
id: databaseId,
});
try {
const { statusCode } = await container.item(id).delete();
return statusCode;
} catch (err) {
console.log(err);
return err.code;
}
}
async function readById(id) {
const { database } = await client.databases.createIfNotExists({
id: databaseId,
});
const { container } = await database.containers.createIfNotExists({
id: databaseId,
});
const item = container.item(id, undefined);
const { resource: readDoc, statusCode, activityId } = await item.read();
console.log("statuscode:" + statusCode);
console.log("activity id:" + activityId);
if (statusCode == 200) {
return { statusCode: statusCode, content: readDoc.content };
} else {
return { statusCode: 404 };
}
}
module.exports = { init, getNotes, writeData, deleteNote, readById };