/* global use, db */
// MongoDB Playground
// To disable this template go to Settings | MongoDB | Use Default Template For Playground.
// Make sure you are connected to enable completions and to be able to run a playground.
// Use Ctrl+Space inside a snippet or a string literal to trigger completions.
// The result of the last command run in a playground is shown on the results panel.
// By default the first 20 documents will be returned with a cursor.
// Use 'console.log()' to print to the debug output.
// For more documentation on playgrounds please refer to
// https://www.mongodb.com/docs/mongodb-vscode/playgrounds/
use("statistics");

db.peertube.aggregate([
  {
    $set: {
      player: {
        $function: {
          lang: "js",
          args: ["$player"],
          body: function (str) {
            try {
              return JSON.parse(str);
            } catch (e) {
              if (typeof str === "object") {
                return str;
              } else {
                return null;
              }
            }
          },
        },
      },
      peers: {
        $function: {
          lang: "js",
          args: ["$peers"],
          body: function (str) {
            try {
              return JSON.parse(str);
            } catch (e) {
              if (typeof str === "object") {
                return str;
              } else {
                return null;
              }
            }
          },
        },
      },
    },
  },
  {
    $out: {
      db: "statistics",
      coll: "peertube_ts",
      timeseries: {
        timeField: "timestamp",
        metaField: "tags",
        granularity: "seconds",
      },
    },
  },
]);
