UNPKG

@pipedream/ironclad

Version:

Pipedream Ironclad Components

104 lines (101 loc) 2.67 kB
import ironclad from "../../ironclad.app.mjs"; export default { key: "ironclad-create-record", name: "Create Record", description: "Creates a new record in Ironclad. [See the documentation](https://developer.ironcladapp.com/reference/create-a-record)", version: "0.0.1", type: "action", props: { ironclad, name: { type: "string", label: "Name", description: "Name of the record", }, type: { propDefinition: [ ironclad, "recordType", ], }, links: { propDefinition: [ ironclad, "recordId", ], type: "string[]", label: "Links", description: "Record ID's to link to the new record", }, parent: { propDefinition: [ ironclad, "recordId", ], label: "Parent", description: "Record ID to be set as the parent of the current record", }, children: { propDefinition: [ ironclad, "recordId", ], type: "string[]", label: "Children", description: "Record ID's to be set as child records of the current record", }, properties: { propDefinition: [ ironclad, "properties", ], reloadProps: true, }, }, async additionalProps() { const props = {}; if (!this.properties?.length) { return props; } const { properties } = await this.ironclad.getRecordsSchema(); for (const property of this.properties) { props[property] = { type: properties[property].type === "boolean" ? "boolean" : "string", label: properties[property].displayName, description: properties[property].description ?? `Value of ${properties[property].displayName}`, }; } return props; }, async run({ $ }) { const { properties } = await this.ironclad.getRecordsSchema(); const propertiesData = {}; for (const property of this.properties) { propertiesData[property] = { type: properties[property].type, value: this[property], }; } const response = await this.ironclad.createRecord({ $, data: { name: this.name, type: this.type, links: this.links?.length && this.links.map((link) => ({ recordId: link, })), parent: this.parent && { recordId: this.parent, }, children: this.children?.length && this.children.map((child) => ({ recordId: child, })), properties: propertiesData, }, }); $.export("$summary", `Created record with ID: ${response.id}`); return response; }, };