@exocet/pandora-mongodb

    0.0.1-alpha.0 • Public • Published

    Pandora MongoDB

    Addon to provide flow and setup functions to MongoDB persistence for Pandora.

    npm install --save @exocet/pandora-mongodb
    

    Setup

    Available features:

    • Create text indexes
    • Provides AQS query parser
    • Flow steps: insert (index), update, delete, exists and search

    To add this addon into your project, put the addon spec into your endpoint YAML:

    kind: Pandora/endpoint
    metadata:
      name: myEndpoint
    spec:
      addons:
        name: mongodb
          package: "@exocet/pandora-mongodb"
          flow: true
          setup: true
      configuration:
        mongodb: # Any configuration here will be passed to client configuration (1) 
          database: myDatabase
          url: mongodb://localhost:27017
          collections:
            entityName: myNamespace.myEntity # To create index and mapping for an entity, pass the entity name, the settings bellow are the defaults 
              textIndex: true
            collectionName: myCollection
              textIndex: true
    1. Client configuration

    After the setup the following property of the context will be available:

    • .application.dbs.mongoClient - The client connected to MongoDB
    • .application.dbs.mongodb - The connected database reference

    Hooks

    The hooks created by this addon are:

    • mongodbQueryParsers (.service.hooks.useHook('mongodbQueryParsers')) - Synchronous hook that parses the search AQS query into MongoDB aggregation pipeline.
      const [queryParsers] = this.service.hooks.useHook('mongodbQueryParsers');
      const queryParser = queryParsers(entityName);
      const {
          pipeline, // The aggregation pipeline 
          hasMatch // Boolean to indicate if the pipeline have the match operation
      = queryParser(
          aqsQuery,
          { // Optional options
              pipeline: [], // Existent aggregation pipeline
          }
      );

    Flow

    The provided flow type and steps are listed bellow:

    • insert - This flow step insert data into MongoDB:
      kind: Pandora/flowStep
      metadata:
        name: entityPersistence
        labels:
          operation: insert
      spec:
        type: mongodb # Flow step type 
        options:
          operation: insert # Defines that is an insert operation 
          inboundFrom: request.data # The path to the data to be inserted (acquired from execution context) 
          idFrom: null # If you want to use a custom ID instead of UUIDv4 you can pass the path from the execution context to get the ID value 
          collectionName: null # If you're using custom collection name, pass the name here 
          entity: # The entity to define the input parser hook 
            namespace: myNamespace
            name: myEntity
    • exists - This flow step check if an entity exists by ID:
      kind: Pandora/flowStep
      metadata:
        name: entityPersistence
        labels:
          operation: exists
      spec:
        type: mongodb
        options:
          operation: exists
          idFrom: request.data.id # The path of the ID 
          outboundTo: null # The execution path of the context to put the found ID, is an useful flow step to put before update and delete flows to get the native ID before operating the entity 
          collectionName: null
          entity:
            namespace: myNamespace
            name: myEntity
    • update - This flow step updates entities:
      kind: Pandora/flowStep
      metadata:
        name: entityPersistence
        labels:
          operation: update
      spec:
        type: mongodb
        options:
          operation: update
          inboundFrom: request.data
          idFrom: request.data.id # The path of the ID to update entity 
          collectionName: null
          entity:
            namespace: myNamespace
            name: myEntity
    • delete - This flow step deletes entities:
      kind: Pandora/flowStep
      metadata:
        name: entityPersistence
        labels:
          operation: delete
      spec:
        type: mongodb
        options:
          operation: delete
          idFrom: request.data.id
          collectionName: null
          entity:
            namespace: myNamespace
            name: myEntity
    • search - This flow step searches for entities using AQS:
      kind: Pandora/flowStep
      metadata:
        name: entityPersistence
        labels:
          operation: search
      spec:
        type: mongodb
        options:
          operation: search
          queryFrom: request.query # The execution context path that have the AQS querystring 
          outboundTo: response # The execution context path to put the search result 
          pipelineFrom: null # The execution context path that have an existing pipeline instance to append the parsed AQS filters, pass null to indicate the flow step to generate a new instance 
          collectionName: null
          entity:
            namespace: myNamespace
            name: myEntity

    Install

    npm i @exocet/pandora-mongodb

    DownloadsWeekly Downloads

    1

    Version

    0.0.1-alpha.0

    License

    Apache-2.0

    Unpacked Size

    49.6 kB

    Total Files

    19

    Last publish

    Collaborators

    • codermarcos
    • vflopes