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}