mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-14 00:24:07 -08:00
81b5828558
* Boilerplate with new node's version for metabse * Metabases MVP features * Added new credential for metabse, added custom auth for metabase * Fixed bug with one enpoint not working * Clean up code * Uniformised the renovate token * Made two example of responses for review * Fixed lint issues * Feature add datasources * Changed output from databases * Changed questions data output * Fixed issue when testing credentials with new node format * Add the possibility to get raw data * Removed handle for the metabase meta results, changed export's name * Add binary extraction for the result data * Fixed binary download issue * ⚡ Add preAuthentication method to credentials * Revert "Added new credential for metabse, added custom auth for metabase" This reverts commit5f1b7607ad
. * Revert "Added new credential for metabse, added custom auth for metabase" This reverts commit5f1b7607ad
. * Added preAuth and fixed autfixable linting rules * Fixed linting errors * Linting fixes * Remove / at the end of url, and add placeholder for cred url * Make export to Json retun only json and no binary * Fix lint issues * Add action and exception for lint rule * Remove unnecessary credential file * ⚡ Simplify and cleanup Co-authored-by: ricardo <ricardoespinoza105@gmail.com> Co-authored-by: Omar Ajoue <krynble@gmail.com> Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
146 lines
3 KiB
TypeScript
146 lines
3 KiB
TypeScript
import {
|
|
IDataObject,
|
|
IExecuteSingleFunctions,
|
|
IN8nHttpFullResponse,
|
|
INodeExecutionData,
|
|
INodeProperties,
|
|
} from 'n8n-workflow';
|
|
|
|
export const questionsOperations: INodeProperties[] = [
|
|
{
|
|
displayName: 'Operation',
|
|
name: 'operation',
|
|
type: 'options',
|
|
noDataExpression: true,
|
|
displayOptions: {
|
|
show: {
|
|
resource: ['questions'],
|
|
},
|
|
},
|
|
options: [
|
|
{
|
|
name: 'Get',
|
|
value: 'get',
|
|
description: 'Get a specific question',
|
|
routing: {
|
|
request: {
|
|
method: 'GET',
|
|
url: '={{"/api/card/" + $parameter.questionId}}',
|
|
},
|
|
},
|
|
action: 'Get a questions',
|
|
},
|
|
{
|
|
name: 'Get All',
|
|
value: 'getAll',
|
|
description: 'Get all the questions',
|
|
routing: {
|
|
request: {
|
|
method: 'GET',
|
|
url: '/api/card/',
|
|
},
|
|
},
|
|
action: 'Get all questions',
|
|
},
|
|
{
|
|
name: 'Result Data',
|
|
value: 'resultData',
|
|
description: 'Return the result of the question to a specific file format',
|
|
routing: {
|
|
request: {
|
|
method: 'POST',
|
|
url: '={{"/api/card/" + $parameter.questionId + "/query/" + $parameter.format}}',
|
|
returnFullResponse: true,
|
|
encoding: 'arraybuffer',
|
|
},
|
|
output: {
|
|
postReceive: [
|
|
// @ts-ignore
|
|
async function (
|
|
this: IExecuteSingleFunctions,
|
|
_items: INodeExecutionData[],
|
|
response: IN8nHttpFullResponse,
|
|
): Promise<INodeExecutionData[]> {
|
|
const items = _items;
|
|
const result: INodeExecutionData[] = [];
|
|
for (let i = 0; i < items.length; i++) {
|
|
const newItem: INodeExecutionData = {
|
|
json: items[i].json,
|
|
binary: {},
|
|
};
|
|
|
|
if (items[i].binary !== undefined) {
|
|
Object.assign(newItem.binary, items[i].binary);
|
|
}
|
|
items[i] = newItem;
|
|
if (this.getNode().parameters.format === 'json') {
|
|
items[i].json = JSON.parse(
|
|
items[i].json as unknown as string,
|
|
)[0] as unknown as IDataObject;
|
|
console.log(items[i].json);
|
|
delete items[i].binary;
|
|
} else {
|
|
items[i].binary!['data'] = await this.helpers.prepareBinaryData(
|
|
response.body as Buffer,
|
|
'data',
|
|
response.headers['content-type'],
|
|
);
|
|
}
|
|
result.push(items[i]);
|
|
}
|
|
return result;
|
|
},
|
|
],
|
|
},
|
|
},
|
|
action: 'Result Data a questions',
|
|
},
|
|
],
|
|
default: 'getAll',
|
|
},
|
|
];
|
|
|
|
export const questionsFields: INodeProperties[] = [
|
|
{
|
|
displayName: 'Question ID',
|
|
name: 'questionId',
|
|
type: 'string',
|
|
required: true,
|
|
placeholder: '0',
|
|
displayOptions: {
|
|
show: {
|
|
resource: ['questions'],
|
|
operation: ['get', 'resultData'],
|
|
},
|
|
},
|
|
default: '',
|
|
},
|
|
{
|
|
displayName: 'Format',
|
|
name: 'format',
|
|
type: 'options',
|
|
required: true,
|
|
options: [
|
|
{
|
|
name: 'CSV',
|
|
value: 'csv',
|
|
},
|
|
{
|
|
name: 'JSON',
|
|
value: 'json',
|
|
},
|
|
{
|
|
name: 'XLSX',
|
|
value: 'xlsx',
|
|
},
|
|
],
|
|
default: 'csv',
|
|
displayOptions: {
|
|
show: {
|
|
resource: ['questions'],
|
|
operation: ['resultData'],
|
|
},
|
|
},
|
|
},
|
|
];
|