2248 zapier integration implement typeorm eventsubscribers (#3122)

* Add new queue to twenty-server

* Add triggers to zapier

* Rename webhook operation

* Use find one or fail

* Use logger

* Fix typescript templating

* Add dedicated call webhook job

* Update logging

* Fix error handling
This commit is contained in:
martmull
2024-01-03 18:09:57 +01:00
committed by GitHub
parent 4ebaacc306
commit 65250839fb
36 changed files with 1040 additions and 209 deletions

View File

@ -1,20 +1,21 @@
import { Bundle, ZObject } from "zapier-platform-core";
import requestDb, { requestSchema } from "../utils/requestDb";
import handleQueryParams from "../utils/handleQueryParams";
import { capitalize } from "../utils/capitalize";
import { computeInputFields } from "../utils/computeInputFields";
import { Bundle, ZObject } from 'zapier-platform-core';
import requestDb, { requestSchema } from '../utils/requestDb';
import handleQueryParams from '../utils/handleQueryParams';
import { capitalize } from '../utils/capitalize';
import { computeInputFields } from '../utils/computeInputFields';
import { findObjectNamesSingularKey } from '../triggers/find_object_names_singular';
const recordInputFields = async (z: ZObject, bundle: Bundle) => {
const schema = await requestSchema(z, bundle)
const infos = schema.components.schemas[bundle.inputData.nameSingular]
const schema = await requestSchema(z, bundle);
const infos = schema.components.schemas[bundle.inputData.nameSingular];
return computeInputFields(infos);
}
};
const perform = async (z: ZObject, bundle: Bundle) => {
const data = bundle.inputData
const nameSingular = data.nameSingular
delete data.nameSingular
const data = bundle.inputData;
const nameSingular = data.nameSingular;
delete data.nameSingular;
const query = `
mutation create${capitalize(nameSingular)} {
create${capitalize(nameSingular)}(
@ -25,28 +26,30 @@ const perform = async (z: ZObject, bundle: Bundle) => {
return await requestDb(z, bundle, query);
};
export const createRecordKey = 'create_record';
export default {
display: {
description: 'Creates a new Record in Twenty',
hidden: false,
label: 'Create New Record',
},
key: 'create_record',
key: createRecordKey,
noun: 'Record',
operation: {
inputFields: [
{
key: 'nameSingular',
required: true,
label: 'Name of the Record to create',
dynamic: 'find_objects.nameSingular',
label: 'Record Name',
dynamic: `${findObjectNamesSingularKey}.nameSingular`,
altersDynamicFields: true,
},
recordInputFields
recordInputFields,
],
sample: {
id: '179ed459-79cf-41d9-ab85-96397fa8e936',
},
perform
perform,
},
}
};