mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-23 22:47:28 +00:00
* init
* cosmos db icon
* manifest file
* adds azure package
* test connection
* operations: list databases
* operation: read item, insert items with a lookup function
* operation: delete item
* operation: query database using SQL-like syntax
* adds unit tests
* adds unit test: query db
* clean up
* docs: cosmosdb
* docs: cleanup
* typo
* updated the image(docs)
* updated inserting operation: field: placeholder
* item id for delete operation
* Revert "item id for delete operation"
This reverts commit bc2d1b87e4.
* item id for delete operation
136 lines
3.6 KiB
TypeScript
136 lines
3.6 KiB
TypeScript
import { Container, CosmosClient } from '@azure/cosmos';
|
|
|
|
export async function listDatabases(client: CosmosClient): Promise<object> {
|
|
return new Promise((resolve, reject) => {
|
|
client.databases
|
|
.readAll({})
|
|
.fetchAll()
|
|
.then((data) => {
|
|
const databases = data.resources.map((db) => db.id);
|
|
resolve(databases);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
})
|
|
.finally(() => client.dispose());
|
|
});
|
|
}
|
|
|
|
export function listContainers(client: CosmosClient, database: string) {
|
|
return new Promise((resolve, reject) => {
|
|
lookUpDatabase(client, database)
|
|
.then(() => {
|
|
client
|
|
.database(database)
|
|
.containers.readAll()
|
|
.fetchAll()
|
|
.then((data) => {
|
|
const containers = data.resources.map((container) => container.id);
|
|
resolve(containers);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
})
|
|
|
|
.finally(() => client.dispose());
|
|
});
|
|
}
|
|
|
|
export function insertItems(client: CosmosClient, database: string, containerId: string, items: []) {
|
|
return new Promise((resolve, reject) => {
|
|
lookUpContainer(client, database, containerId)
|
|
.then((container: Container) => {
|
|
items.forEach(async (item) => {
|
|
await container.items.create(item);
|
|
});
|
|
resolve({ message: 'Items inserted' });
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
})
|
|
.finally(() => client.dispose());
|
|
});
|
|
}
|
|
|
|
export function deleteItem(client: CosmosClient, database: string, containerId: string, itemId) {
|
|
return new Promise((resolve, reject) => {
|
|
lookUpContainer(client, database, containerId)
|
|
.then((container: Container) => {
|
|
container
|
|
.item(itemId)
|
|
.delete()
|
|
.then(() => {
|
|
resolve({ message: 'Item deleted' });
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
})
|
|
.finally(() => client.dispose());
|
|
});
|
|
}
|
|
|
|
export function queryDatabase(client: CosmosClient, database: string, containerId: string, query: string) {
|
|
return new Promise((resolve, reject) => {
|
|
lookUpContainer(client, database, containerId)
|
|
.then((container: Container) => {
|
|
container.items
|
|
.query(query)
|
|
.fetchAll()
|
|
.then((data) => {
|
|
resolve(data.resources);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
})
|
|
.finally(() => client.dispose());
|
|
});
|
|
}
|
|
|
|
export async function getItem(client: CosmosClient, database: string, containerId: string, itemId: string) {
|
|
const { container } = await client.database(database).containers.createIfNotExists({ id: containerId });
|
|
|
|
return (await container.item(itemId).read()).resource;
|
|
}
|
|
|
|
function lookUpContainer(client: CosmosClient, database: string, containerId: string) {
|
|
return new Promise((resolve, reject) => {
|
|
client
|
|
.database(database)
|
|
.containers.createIfNotExists({ id: containerId })
|
|
.then((data) => {
|
|
resolve(data.container);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
}
|
|
|
|
function lookUpDatabase(client: CosmosClient, database: string) {
|
|
return new Promise((resolve, reject) => {
|
|
client.databases
|
|
.createIfNotExists({ id: database })
|
|
.then((data) => {
|
|
resolve(data);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
throw new Error(err);
|
|
})
|
|
.finally(() => client.dispose());
|
|
}
|