UNPKG

@planet-a/affinity-node

Version:
144 lines (143 loc) 4.88 kB
import { defaultTransformers } from './axios_default_transformers.js'; import { FieldValueType } from './lists.js'; import { fieldValuesUrl } from './urls.js'; /** * @module * Field values are displayed in Affinity as the data in the cells of an Affinity spreadsheet. * * As an example for how a field value is created: * 1. Assume there exists a list of people called "Business Development Leads". * 2. A custom field called "Deal Size" is created on this list. Fields are visually displayed as columns. * 3. A person X is added to this list. This action creates a list entry for this person. * 4. A value, 50,000, is entered in the cell corresponding to person X in the Deal Size column. * 5. 50,000 is now a field value tied to the list entry corresponding to person X, and the "Deal Size" field. * * *Notes*: * - By default, Affinity creates some fields for you automatically. These include Location, Industry, Job Titles, and more. See the [Default Fields section](https://api-docs.affinity.co/#default-fields) for more information. * - Opportunities cannot have global field values */ export class FieldValues { /** @hidden */ constructor(axios) { Object.defineProperty(this, "axios", { enumerable: true, configurable: true, writable: true, value: axios }); } static transformFieldValue(fieldValue) { return { ...fieldValue, value: fieldValue.value_type === FieldValueType.DATE ? new Date(fieldValue.value) : fieldValue.value, updated_at: fieldValue.updated_at === null ? null : new Date(fieldValue.updated_at), created_at: new Date(fieldValue.created_at), }; } /** * Fetches field values based on the provided parameters. * * @returns An array of field value objects. * * @example * ```typescript * const fieldValues = await affinity.fieldValues.getAll({ person_id: 1234 }) * console.log(fieldValues) * ``` */ async all(params) { const response = await this.axios.get(fieldValuesUrl(), { params, transformResponse: [ ...defaultTransformers(), (json) => { return json.map(FieldValues.transformFieldValue); }, ], }); return response.data; } /** * Creates a new field value. * * @param data - Object containing the data for creating a new field value * @returns The created field value object. * * @example * ```typescript * const newFieldValue = await affinity.fieldValues.create({ * field_id: 1284, * entity_id: 38706, * value: "Architecture" * }) * console.log(newFieldValue) * ``` */ async create(data) { const response = await this.axios.post(fieldValuesUrl(), { ...data, value: data.value instanceof Date ? data.value.toISOString() : data.value, }, { transformResponse: [ ...defaultTransformers(), (json) => { return FieldValues.transformFieldValue(json); }, ], }); return response.data; } /** * Updates an existing field value. * * @param data - Object containing the data for updating a field value * @returns The updated field value object. * * @example * ```typescript * const updatedFieldValue = await affinity.fieldValues.update({ * field_value_id: 20406836, * value: "Healthcare" * }) * console.log(updatedFieldValue) * ``` */ async update(data) { const response = await this.axios.put(fieldValuesUrl(data.field_value_id), { value: data.value instanceof Date ? data.value.toISOString() : data.value, }, { transformResponse: [ ...defaultTransformers(), (json) => { return FieldValues.transformFieldValue(json); }, ], }); return response.data; } /** * Deletes a specific field value. * * @returns boolean indicating whether the field value was successfully deleted. * * @example * ```typescript * const success = await affinity.fieldValues.delete({ * field_value_id: 20406836 * }) * console.log(success ? 'Field value deleted': 'Field value not deleted') * ``` */ async delete({ field_value_id }) { const response = await this.axios.delete(fieldValuesUrl(field_value_id)); return response.data.success === true; } }