moleculer-db-adapter-cosmos

0.0.3 • Public • Published

Moleculer logo

moleculer-db-adapter-cosmos Build Status Coverage Status GitHub license npm Downloads stability-experimental

Warning: This DB adapter is not stable and it does not contain any Request Units optimizations. Use it at your own risk.

CosmosDB SQL native adapter for Moleculer DB service.

Install

$ npm install moleculer-db moleculer-db-adapter-cosmos --save

Usage

const { ServiceBroker } = require("moleculer");
const DbService = require("moleculer-db");
const CosmosDbAdapter = require("moleculer-db-adapter-cosmos");

// Mock CosmosDB server
const { default: cosmosServer } = require("@zeit/cosmosdb-server");
const https = require("https");

const connection = {
  endpoint: `https://localhost:3000`, // URL to your Cosmos DB
  key: "dummy key", // Put your password
  // Create new Agent with disabled SSL verification
  // since the server uses self-signed certificate
  agent: https.Agent({ rejectUnauthorized: false }) // For test purposes only. Remove this when working with an actual DB
};

const dbName = "sample_database";
const containerName = "sample_collection";

// Create broker
let broker = new ServiceBroker({
  logger: console,
  logLevel: "debug"
});

// Create a service
broker.createService({
  name: "store",
  // Load DB methods and action handlers
  mixins: [DbService],
  // Create a Cosmos DB adapter
  adapter: new CosmosDbAdapter(connection, dbName, containerName),

  async afterConnected() {
    this.broker.logger.info("Connection Established");
  }
});

// Start mock CosmosDB server
cosmosServer().listen(3000, () => {
  // Start the broker
  broker.start().then(async () => {
    const documentDefinition = {
      id: "hello world doc",
      content: "Hello World!"
    };

    // Insert an Item
    let item = await broker.call("store.create", documentDefinition);

    broker.logger.info(`Item Created`);
    broker.logger.info(item);

    // Find all items in BD
    let result = await broker.call("store.find");
    broker.logger.info(`Items in DB`);
    broker.logger.info(result);

    // Count the items
    let count = await broker.call("store.count");
    broker.logger.info(`Number of Items in DB`);
    broker.logger.info(count);

    // Remove by ID
    broker.logger.info(`Removing an Item`);
    await broker.call("store.remove", { id: documentDefinition.id });

    // Count again
    count = await broker.call("store.count");
    broker.logger.info(`Number of Items in DB`);
    broker.logger.info(count);
  });
});

Test

$ npm test

In development with watching

$ npm run ci

License

The project is available under the MIT license.

Contact

Copyright (c) 2019 André Mazayev

Package Sidebar

Install

npm i moleculer-db-adapter-cosmos

Weekly Downloads

0

Version

0.0.3

License

MIT

Unpacked Size

17.9 kB

Total Files

9

Last publish

Collaborators

  • andre.mazayev