import autodesk from "../../autodesk.app.mjs";
export default {
  key: "autodesk-create-folder",
  name: "Create Folder",
  description: "Creates a new folder in a project in Autodesk. [See the documentation](https://aps.autodesk.com/en/docs/data/v2/reference/http/projects-project_id-folders-POST/)",
  version: "0.0.2",
  annotations: {
    destructiveHint: false,
    openWorldHint: true,
    readOnlyHint: false,
  },
  type: "action",
  props: {
    autodesk,
    hubId: {
      propDefinition: [
        autodesk,
        "hubId",
      ],
    },
    projectId: {
      propDefinition: [
        autodesk,
        "projectId",
        (c) => ({
          hubId: c.hubId,
        }),
      ],
    },
    name: {
      type: "string",
      label: "Name",
      description: "The name of the new folder",
    },
    parent: {
      propDefinition: [
        autodesk,
        "folderId",
        (c) => ({
          hubId: c.hubId,
          projectId: c.projectId,
        }),
      ],
      label: "Parent Folder ID",
      description: "The identifier of the parent folder",
    },
    type: {
      type: "string",
      label: "Extension Type",
      description: "The type of folder extension. For BIM 360 Docs folders, use `folders:autodesk.bim360:Folder`. For all other services, use `folders:autodesk.core:Folder`.",
      options: [
        {
          label: "BIM 360 Docs folders",
          value: "folders:autodesk.core:Folder",
        },
        {
          label: "Other folders",
          value: "folders:autodesk.bim360:Folder",
        },
      ],
      default: "folders:autodesk.core:Folder",
      optional: true,
    },
  },
  async run({ $ }) {
    const response = await this.autodesk.createFolder({
      $,
      projectId: this.projectId,
      data: {
        jsonapi: {
          version: "1.0",
        },
        data: {
          type: "folders",
          attributes: {
            name: this.name,
            extension: {
              type: this.type,
              version: "1.0",
            },
          },
          relationships: {
            parent: {
              data: {
                type: "folders",
                id: this.parent,
              },
            },
          },
        },
      },
    });
    $.export("$summary", `Successfully created new folder: ${this.name}`);
    return response;
  },
};