UNPKG

n8n-nodes-nextcloud-tables

Version:

Production-Ready n8n Node für Nextcloud Tables - Vollständige API-Abdeckung mit erweiterten Filtern, Multi-Column-Sorting, CSV-Import und professioneller Datenvalidierung

200 lines 8.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NextcloudTables = void 0; // Handler importieren const table_handler_1 = require("./handlers/table.handler"); const row_handler_1 = require("./handlers/row.handler"); const view_handler_1 = require("./handlers/view.handler"); const column_handler_1 = require("./handlers/column.handler"); const share_handler_1 = require("./handlers/share.handler"); const import_handler_1 = require("./handlers/import.handler"); // Helper importieren const node_methods_1 = require("./helpers/node.methods"); const api_helper_1 = require("./helpers/api.helper"); // Beschreibungen importieren const table_1 = require("./descriptions/table"); const row_1 = require("./descriptions/row"); const view_1 = require("./descriptions/view"); const column_1 = require("./descriptions/column"); const share_1 = require("./descriptions/share"); const import_1 = require("./descriptions/import"); class NextcloudTables { constructor() { this.description = { displayName: 'Nextcloud Tables', name: 'nextcloudTables', icon: 'file:nextcloud-tables.svg', group: ['transform'], version: 1, subtitle: '={{ $parameter["operation"] + ": " + $parameter["resource"] }}', description: 'Verwalten Sie Ihre Nextcloud Tables - Tabellen, Zeilen und Daten', defaults: { name: 'Nextcloud Tables', }, inputs: ["main" /* NodeConnectionType.Main */], outputs: ["main" /* NodeConnectionType.Main */], credentials: [ { name: 'nextcloudTablesApi', required: true, }, ], usableAsTool: true, requestDefaults: { headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, }, properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Tabelle', value: 'table', description: 'Operationen mit Nextcloud Tables', }, { name: 'View', value: 'view', description: 'Operationen mit Tabellen-Views', }, { name: 'Spalte', value: 'column', description: 'Operationen mit Tabellen-Spalten', }, { name: 'Share', value: 'share', description: 'Operationen mit Tabellen-Freigaben', }, { name: 'Import', value: 'import', description: 'CSV-Import in Tabellen', }, { name: 'Zeile', value: 'row', description: 'Operationen mit Tabellen-Zeilen', }, ], default: 'table', description: 'Die Ressource für diese Operation', }, // Operationen und Felder ...table_1.tableOperations, ...table_1.tableFields, ...view_1.viewOperations, ...view_1.viewFields, ...column_1.columnOperations, ...column_1.columnFields, ...share_1.shareOperations, ...share_1.shareFields, ...import_1.importOperations, ...import_1.importFields, ...row_1.rowOperations, ...row_1.rowFields, ], }; this.methods = { loadOptions: { async getTables() { return node_methods_1.NodeLoadOptions.getTables(this); }, async getViews() { return node_methods_1.NodeLoadOptions.getViews(this); }, async getColumns() { return node_methods_1.NodeLoadOptions.getColumns(this); }, async getUsers() { return node_methods_1.NodeLoadOptions.getUsers(this); }, async getGroups() { return node_methods_1.NodeLoadOptions.getGroups(this); }, async getShareReceivers() { return node_methods_1.NodeLoadOptions.getShareReceivers(this); }, }, listSearch: { async getTables(filter) { return node_methods_1.NodeListSearch.getTables(this, filter); }, async getViews(filter) { return node_methods_1.NodeListSearch.getViews(this, filter); }, async getColumns(filter) { return node_methods_1.NodeListSearch.getColumns(this, filter); }, }, }; } async execute() { const items = this.getInputData(); const returnData = []; for (let i = 0; i < items.length; i++) { const startTime = Date.now(); try { const resource = this.getNodeParameter('resource', i); const operation = this.getNodeParameter('operation', i); // Log operation start api_helper_1.NextcloudTablesLogger.operationStart(resource, operation, { itemIndex: i, totalItems: items.length }); let result; switch (resource) { case 'table': result = await table_handler_1.TableHandler.execute(this, operation, i); break; case 'view': result = await view_handler_1.ViewHandler.execute(this, operation, i); break; case 'column': result = await column_handler_1.ColumnHandler.execute(this, operation, i); break; case 'share': result = await share_handler_1.ShareHandler.execute(this, operation, i); break; case 'import': result = await import_handler_1.ImportHandler.execute(this, operation, i); break; case 'row': result = await row_handler_1.RowHandler.execute(this, operation, i); break; default: api_helper_1.NextcloudTablesLogger.error('OPERATION-ERROR', `Unknown resource: ${resource}`, null, { resource, operation }); throw new Error(`[N8N-NEXTCLOUD-TABLES] Unbekannte Ressource: ${resource}`); } const duration = Date.now() - startTime; api_helper_1.NextcloudTablesLogger.operationSuccess(resource, operation, duration, result); returnData.push({ json: result }); } catch (error) { const duration = Date.now() - startTime; const resource = this.getNodeParameter('resource', i, 'unknown'); const operation = this.getNodeParameter('operation', i, 'unknown'); api_helper_1.NextcloudTablesLogger.operationError(resource, operation, error, duration); const nodeError = error; if (this.continueOnFail()) { returnData.push({ json: { error: nodeError.message }, }); } else { throw error; } } } return this.prepareOutputData(returnData); } } exports.NextcloudTables = NextcloudTables; //# sourceMappingURL=NextcloudTables.node.js.map