Function: Basic Bucket Ops

      +

      Goal: Perform the basic bucket operations where Eventing interacts with the Data service.

      • This function basicBucketOps merely demonstrates Eventing’s Basic Bucket Accessors or BucketOps.

      • Requires Eventing Storage (or metadata collection), a "source" collection, and a "destination" collection.

      • Needs a Binding of type Bucket Alias (as documented in the Scriptlet).

      • Will operate on any mutation where doc.type === "basic_bkt_ops".

      • The final document is deleted, as such the output is the Application log file.

      • For more detail refer to Bucket Accessors

      • basicBucketOps

      • Input Data/Mutation

      • Output Data/Logged

      // To run configure the settings for this Function, basicBucketOps, as follows:
      //
      // Version 7.1+
      //   "Function Scope"
      //     *.* (or try bulk.data if non-privileged)
      // Version 7.0+
      //   "Listen to Location"
      //     bulk.data.source
      //   "Eventing Storage"
      //     rr100.eventing.metadata
      //   Binding(s)
      //    1. "binding type", "alias name...", "bucket.scope.collection", "Access"
      //       "bucket alias", "dst_col",       "bulk.data.destination",   "read and write"
      //
      // Version 6.X
      //   "Source Bucket"
      //     source
      //   "MetaData Bucket"
      //     metadata
      //   Binding(s)
      //    1. "binding type", "alias name...", "bucket",     "Access"
      //       "bucket alias", "dst_col",      "destination", "read and write"
      
      function OnUpdate(doc, meta) {
        // filter out non-interesting docs
        if (doc.type !== "basic_bkt_ops") return;
        // Assuming 'dst_col' is a bucket alias binding in this case to a non source bucket
        log("OnUpdate got mutation for id",meta.id,"doc",doc);
      
        // make a key based on the meta.id of the input mutation
        var dst_key = "dst_" + meta.id;
        // make a document to write, include the input mutation's doc
        var doc_to_wr = {"status":3, "mutation": doc};
      
        // this is a bucket SET operation.
        dst_col[dst_key] = doc_to_wr;
        log("wrote DOC to dst_col with id",dst_key,doc_to_wr);
      
        // this is a bucket GET operation.
        var doc_read = dst_col[dst_key];
        log("read DOC from dst_col with id",dst_key,doc_read);
      
        // this is a bucket DEL operation.
        delete dst_col[dst_key];
        log("deleted "+dst_key+" from dst_col");
      }
      INPUT: KEY basic_bkt_ops::1
      
      {
        "type": "basic_bkt_ops",
        "id": 1,
        "test": true
      }
      2021-07-18T17:56:56.021-07:00 [INFO] "read DOC from dst_col with id" "dst_basic_bkt_ops::1" {"status":3,"mutation":{"type":"basic_bkt_ops","id":1,"test":true}}
      
      2021-07-18T17:56:56.021-07:00 [INFO] "deleted dst_basic_bkt_ops::1 from dst_col"
      
      2021-07-18T17:56:56.020-07:00 [INFO] "wrote DOC to dst_col with id" "dst_basic_bkt_ops::1" {"status":3,"mutation":{"type":"basic_bkt_ops","id":1,"test":true}}
      
      2021-07-18T17:56:56.019-07:00 [INFO] "OnUpdate got mutation for id" "basic_bkt_ops::1" "doc" {"type":"basic_bkt_ops","id":1,"test":true}