actions/add-data-store-record/add-data-store-record.mjs
import niftyimages from "../../app/niftyimages.app.mjs"; import { defineAction } from "@pipedream/types"; import { ConfigurationError } from "@pipedream/platform"; export default defineAction({ name: "Add Data Store Record", description: "Create or update a Data Store Record [See docs here](https://api.niftyimages.com/)", key: "niftyimages-add-data-store-record", version: "0.0.2", annotations: { destructiveHint: true, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { niftyimages, dataStoreApiKey: { label: "Data Store API Key", description: `The API Key for the Data Store you want to create/update a record on. \\ To find this, go to **Data Sources**, choose a Data Store, and click on **"Use Our API"**. \\ *Note that only a **Custom Store** can be updated.*`, type: "string", reloadProps: true, }, }, async additionalProps() { const newProps = {}; const apiKey = this.dataStoreApiKey?.trim(); let fields; try { fields = await this.niftyimages.getDataStoreFields(apiKey); } catch (err) { throw new ConfigurationError(`Error fetching data - please check the **API Key**. \`${err.message}\``); } const newPropNames = []; fields.forEach((field) => { const { name, type, date_input_format, } = field; newProps[name] = { label: this.niftyimages.getFieldLabel(field), description: date_input_format ? `Must be a date in the \`${date_input_format}\` format` : undefined, type: this.niftyimages.getFieldPropType(type), }; newPropNames.push(name); }); newProps["$fieldNames"] = { label: "Fields to Update", description: "Comma-separated list of the fields to be updated (defaults to all).", type: "string", optional: true, default: newPropNames.join(), }; return newProps; }, async run({ $ }) { const $this = this; const strNames = $this.$fieldNames?.trim(); if (!strNames) { throw new ConfigurationError("Please check the `Fields to Update` prop."); } const data = {}; strNames.split(",").forEach((fieldName) => { const name = fieldName.trim(); data[name] = $this[name]; }); const params = { $, apiKey: $this.dataStoreApiKey, data, }; const response = await $this.niftyimages.addRecord(params); $.export("$summary", "Updated record successfully"); return response; }, });