mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-02 07:01:30 -08:00
Sfdc (#933)
* add sfdc user node interface
* add sfdc user node description for get method
* sfdc user node getall
* sfdc user node support limit
* sfdc user node support options
* sfdc user node update user operations
* sfdc add usr node query logic
* ⚡ Small improvements
Co-authored-by: YErii <yeriime@outlook.com>
This commit is contained in:
parent
c42ae57dc1
commit
5a0e356ab6
|
@ -71,7 +71,13 @@ import {
|
|||
import {
|
||||
ITask,
|
||||
} from './TaskInterface';
|
||||
|
||||
import {
|
||||
userFields,
|
||||
userOperations,
|
||||
} from './UserDescription';
|
||||
import {
|
||||
IUser,
|
||||
} from './UserInterface';
|
||||
|
||||
export class Salesforce implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
|
@ -135,7 +141,11 @@ export class Salesforce implements INodeType {
|
|||
value: 'task',
|
||||
description: 'Represents a business activity such as making a phone call or other to-do items. In the user interface, and records are collectively referred to as activities.',
|
||||
},
|
||||
|
||||
{
|
||||
name: 'User',
|
||||
value: 'user',
|
||||
description: 'Represents a person, which is one user in system.',
|
||||
},
|
||||
],
|
||||
default: 'lead',
|
||||
description: 'Resource to consume.',
|
||||
|
@ -154,6 +164,8 @@ export class Salesforce implements INodeType {
|
|||
...taskFields,
|
||||
...attachmentOperations,
|
||||
...attachmentFields,
|
||||
...userOperations,
|
||||
...userFields,
|
||||
],
|
||||
};
|
||||
|
||||
|
@ -1885,6 +1897,35 @@ export class Salesforce implements INodeType {
|
|||
responseData = await salesforceApiRequest.call(this, 'GET', '/sobjects/attachment');
|
||||
}
|
||||
}
|
||||
if (resource === 'user') {
|
||||
//https://developer.salesforce.com/docs/api-explorer/sobject/User/get-user-id
|
||||
if (operation === 'get') {
|
||||
const userId = this.getNodeParameter('userId', i) as string;
|
||||
responseData = await salesforceApiRequest.call(this, 'GET', `/sobjects/user/${userId}`);
|
||||
}
|
||||
//https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_query.htm
|
||||
if (operation === 'getAll') {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
const options = this.getNodeParameter('options', i) as IDataObject;
|
||||
const fields = ['id,name,email'];
|
||||
if (options.fields) {
|
||||
// @ts-ignore
|
||||
fields.push(...options.fields.split(','));
|
||||
}
|
||||
try {
|
||||
if (returnAll) {
|
||||
qs.q = `SELECT ${fields.join(',')} FROM User`;
|
||||
responseData = await salesforceApiRequestAllItems.call(this, 'records', 'GET', '/query', {}, qs);
|
||||
} else {
|
||||
const limit = this.getNodeParameter('limit', i) as number;
|
||||
qs.q = `SELECT ${fields.join(',')} FROM User Limit ${limit}`;
|
||||
responseData = await salesforceApiRequestAllItems.call(this, 'records', 'GET', '/query', {}, qs);
|
||||
}
|
||||
} catch(err) {
|
||||
throw new Error(`Salesforce Error: ${err}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Array.isArray(responseData)) {
|
||||
returnData.push.apply(returnData, responseData as IDataObject[]);
|
||||
} else {
|
||||
|
|
126
packages/nodes-base/nodes/Salesforce/UserDescription.ts
Normal file
126
packages/nodes-base/nodes/Salesforce/UserDescription.ts
Normal file
|
@ -0,0 +1,126 @@
|
|||
import {
|
||||
INodeProperties,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
export const userOperations = [
|
||||
{
|
||||
displayName: 'Operation',
|
||||
name: 'operation',
|
||||
type: 'options',
|
||||
displayOptions: {
|
||||
show: {
|
||||
resource: [
|
||||
'user',
|
||||
],
|
||||
},
|
||||
},
|
||||
options: [
|
||||
{
|
||||
name: 'Get',
|
||||
value: 'get',
|
||||
description: 'Get a user',
|
||||
},
|
||||
{
|
||||
name: 'Get All',
|
||||
value: 'getAll',
|
||||
description: 'Get all users',
|
||||
},
|
||||
],
|
||||
default: 'get',
|
||||
description: 'The operation to perform.'
|
||||
}
|
||||
] as INodeProperties[];
|
||||
|
||||
export const userFields = [
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* user:get */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
{
|
||||
displayName: 'User ID',
|
||||
name: 'userId',
|
||||
type: 'string',
|
||||
required: true,
|
||||
default: '',
|
||||
displayOptions: {
|
||||
show: {
|
||||
resource: [
|
||||
'user',
|
||||
],
|
||||
operation: [
|
||||
'get',
|
||||
],
|
||||
},
|
||||
},
|
||||
description: 'Id of user that needs to be fetched'
|
||||
},
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* user:getAll */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
{
|
||||
displayName: 'Return All',
|
||||
name: 'returnAll',
|
||||
type: 'boolean',
|
||||
displayOptions: {
|
||||
show: {
|
||||
resource: [
|
||||
'user',
|
||||
],
|
||||
operation: [
|
||||
'getAll',
|
||||
],
|
||||
}
|
||||
},
|
||||
default: false,
|
||||
description: 'If all results should be returned or only up to a given limit.'
|
||||
},
|
||||
{
|
||||
displayName: 'Limit',
|
||||
name: 'limit',
|
||||
type: 'number',
|
||||
displayOptions: {
|
||||
show: {
|
||||
resource: [
|
||||
'user',
|
||||
],
|
||||
operation: [
|
||||
'getAll',
|
||||
],
|
||||
returnAll: [
|
||||
false,
|
||||
],
|
||||
},
|
||||
},
|
||||
typeOptions: {
|
||||
minValue: 1,
|
||||
maxValue: 100
|
||||
},
|
||||
default: 50,
|
||||
description: 'How many results to return.'
|
||||
},
|
||||
{
|
||||
displayName: 'Options',
|
||||
name: 'options',
|
||||
type: 'collection',
|
||||
placeholder: 'Add Field',
|
||||
default: {},
|
||||
displayOptions: {
|
||||
show: {
|
||||
resource: [
|
||||
'user',
|
||||
],
|
||||
operation: [
|
||||
'getAll',
|
||||
],
|
||||
},
|
||||
},
|
||||
options: [
|
||||
{
|
||||
displayName: 'Fields',
|
||||
name: 'fields',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Fields to include separated by ,'
|
||||
},
|
||||
],
|
||||
},
|
||||
] as INodeProperties[];
|
10
packages/nodes-base/nodes/Salesforce/UserInterface.ts
Normal file
10
packages/nodes-base/nodes/Salesforce/UserInterface.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
export interface IUser {
|
||||
Alias?: string;
|
||||
Department?: string;
|
||||
Division?: string;
|
||||
Email?: string;
|
||||
IsActive?: boolean;
|
||||
MobilePhone?: string;
|
||||
Title?: string;
|
||||
Username?: string;
|
||||
}
|
Loading…
Reference in a new issue