const { CosmosClient } = require("@azure/cosmos");

async function main() {
  const endpoint = process.env.ENDPOINT;
  if (!endpoint) {
    throw new Error("Expected env var ENDPOINT");
  }
  const key = process.env.KEY;
  if (!key) {
    throw new Error("Expected env var KEY");
  }
  const databaseId = process.env.DATABASE;
  if (!databaseId) {
    throw new Error("Expected env var DATABASE");
  }
  const containerId = process.env.CONTAINER;
  if (!containerId) {
    throw new Error("Expected env var CONTAINER");
  }
  const partitionKey = process.env.partitionKey;

  const client = new CosmosClient({
    endpoint,
    key
  });

  const database = client.database(databaseId);
  const container = database.container(containerId);

  const { user } = await database.users.upsert({ id: "testUser" });

  const { resource: containerPermission } = await user.permissions.upsert({
    id: "partitionLevelPermission",
    permissionMode: "All",
    resource: container.url
  });

  console.log("---- Container Level ----");
  console.log("Token:", containerPermission._token);
  console.log(
    "Connection String:",
    `AccountEndpoint=${endpoint};DatabaseId=${databaseId};CollectionId=${containerId};${containerPermission._token}`
  );

  //   const { resource: containerPermission } = await user.permissions.upsert({
  //     id: "partitionLevelPermission",
  //     permissionMode: PermissionMode.All,
  //     resourcePartitionKey: ["p1"],
  //     resource: container.url
  //   });
}

main().catch(error => {
  console.log("Error!");
  throw error;
});