n8n-nodes-couchbase 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/README.md +35 -43
  2. package/dist/credentials/CouchbaseCredentialsApi.credentials.d.ts +2 -3
  3. package/dist/credentials/CouchbaseCredentialsApi.credentials.js +29 -25
  4. package/dist/credentials/CouchbaseCredentialsApi.credentials.js.map +1 -1
  5. package/dist/nodes/{ExampleNode → CouchbaseDB}/CouchbaseNode.node.js +57 -85
  6. package/dist/nodes/CouchbaseDB/CouchbaseNode.node.js.map +1 -0
  7. package/dist/nodes/CouchbaseNode/CouchbaseNode.node.js +68 -111
  8. package/dist/nodes/CouchbaseNode/CouchbaseNode.node.js.map +1 -1
  9. package/dist/package.json +3 -3
  10. package/dist/tsconfig.tsbuildinfo +1 -1
  11. package/package.json +3 -3
  12. package/dist/credentials/ExampleCredentialsApi.credentials.d.ts +0 -8
  13. package/dist/credentials/ExampleCredentialsApi.credentials.js +0 -46
  14. package/dist/credentials/ExampleCredentialsApi.credentials.js.map +0 -1
  15. package/dist/credentials/HttpBinApi.credentials.d.ts +0 -9
  16. package/dist/credentials/HttpBinApi.credentials.js +0 -40
  17. package/dist/credentials/HttpBinApi.credentials.js.map +0 -1
  18. package/dist/nodes/CouchbaseDB/CouchbaseDB.node.d.ts +0 -6
  19. package/dist/nodes/CouchbaseDB/CouchbaseDB.node.js +0 -274
  20. package/dist/nodes/CouchbaseDB/CouchbaseDB.node.js.map +0 -1
  21. package/dist/nodes/CouchbaseNode/CouchbaseDb.node.d.ts +0 -6
  22. package/dist/nodes/CouchbaseNode/CouchbaseDb.node.js +0 -274
  23. package/dist/nodes/CouchbaseNode/CouchbaseDb.node.js.map +0 -1
  24. package/dist/nodes/ExampleNode/CBLogomark.svg +0 -350
  25. package/dist/nodes/ExampleNode/CouchbaseNode.node.js.map +0 -1
  26. package/dist/nodes/ExampleNode/ExampleNode.node.d.ts +0 -6
  27. package/dist/nodes/ExampleNode/ExampleNode.node.js +0 -234
  28. package/dist/nodes/ExampleNode/ExampleNode.node.js.map +0 -1
  29. /package/dist/nodes/{ExampleNode → CouchbaseDB}/CouchbaseNode.node.d.ts +0 -0
package/README.md CHANGED
@@ -6,69 +6,61 @@ Use this connector
6
6
 
7
7
  To install a community node in your n8n instance :
8
8
 
9
- • Go to Settings > Community Nodes :
10
- • Select 'Install a community node'
11
- • Type in "n8n-nodes-couchbase" and hit Install
12
-
9
+ • Go to Settings > Community Nodes :
10
+ • Select 'Install a community node'
11
+ • Type in "n8n-nodes-couchbase" and hit Install
12
+
13
+
13
14
  For more information on installing community nodes, visit the Community nodes docs page.
14
15
 
15
16
  Features
16
17
 
17
- Insert documents
18
- Update documents
19
- Find documents
20
- • Remove documents
21
-
18
+ Create documents
19
+ Read documents
20
+ Update documents
21
+ • Remove documents
22
+ • Import documents
23
+
24
+
22
25
  Couchbase Credentials
23
26
 
24
- Create a Couchbase account and you will need to input the following:
27
+ Create a Couchbase account and you will need to input the following:
25
28
 
26
- • Connection String
29
+ • Connection String
27
30
 
28
- 1. Couchbase Server, you can use this connection string couchbase://127.0.0.1/?connectionTimeout=1200
29
-
30
- 2. Couchbase Capella, you can navigate to the tab named Connect and copy the connection string.
31
+ 1. Couchbase Server, you can use this connection string couchbase://127.0.0.1/?connectionTimeout=1200
31
32
 
32
- Username
33
- • Password
34
- Bucket
35
- Scope
36
- Collection
33
+ 2. Couchbase Capella, you can navigate to the tab named Connect and copy the connection string.
34
+
35
+ Username
36
+ Password
37
+ Bucket
38
+ • Scope
39
+ • Collection
37
40
 
38
41
  Those credentials are needed in order for you to connect to Couchbase.
39
42
 
40
43
  Example Usage
41
44
 
42
- This workflow allows you to insert a document into a Couchbase. This example usage workflow would use the following three nodes. - Start - Set - Couchbase
45
+ This workflow allows you to insert a document into a Couchbase. This example usage workflow would use the following three nodes. - Start - Set - Couchbase
43
46
 
44
47
  The final workflow should look like the following image.
45
48
 
46
-
47
49
  <img width="468" alt="image" src="https://github.com/maruakinu/n8n-nodes-couchbase/assets/100325935/b7947dde-af19-4b40-9c85-b1c5716fa332">
48
50
 
49
- 1. Start node
50
- The start node exists by default when you create a new workflow.
51
-
52
- 2. Set node
53
-
54
- 1. Click on the Add Value button and select 'String' from the dropdown list.
55
- 2. Enter the Property Name of the Value in the Name field.
56
- 3. Enter the value for the name in the Value field.
57
- 4. Click on Execute Node to run the node.
58
-
59
- 3. Couchbase node (Inserting Data)
60
-
61
- 1. Select 'Insert' from the Operation dropdown list.
62
- 2. You will have to enter credentials for the Couchbase. Click the Couchbase Node and enter your credentials.
63
- 3. At the bottom, enter the value that you want to insert in Couchbase.
64
- 4. Click on Execute Node to run the node.
65
-
66
-
67
-
68
-
69
-
70
-
51
+ 1. Start node
52
+ The start node exists by default when you create a new workflow.
71
53
 
54
+ 2. Set node
72
55
 
56
+ 1. Click on the Add Value button and select 'String' from the dropdown list.
57
+ 2. Enter the Property Name of the Value in the Name field.
58
+ 3. Enter the value for the name in the Value field.
59
+ 4. Click on Execute Node to run the node.
73
60
 
61
+ 3. Couchbase node (Inserting Data)
74
62
 
63
+ 1. Select 'Insert' from the Operation dropdown list.
64
+ 2. You will have to enter credentials for the Couchbase. Click the Couchbase Node and enter your credentials.
65
+ 3. At the bottom, enter the value that you want to insert in Couchbase.
66
+ 4. Click on Execute Node to run the node.
@@ -1,8 +1,7 @@
1
- import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
1
+ import { ICredentialType, INodeProperties } from 'n8n-workflow';
2
2
  export declare class CouchbaseCredentialsApi implements ICredentialType {
3
3
  name: string;
4
4
  displayName: string;
5
+ documentationUrl: string;
5
6
  properties: INodeProperties[];
6
- authenticate: IAuthenticateGeneric;
7
- test: ICredentialTestRequest;
8
7
  }
@@ -3,43 +3,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CouchbaseCredentialsApi = void 0;
4
4
  class CouchbaseCredentialsApi {
5
5
  constructor() {
6
- this.name = 'exampleCredentialsApi';
7
- this.displayName = 'Example Credentials API';
6
+ this.name = 'couchbaseApi';
7
+ this.displayName = 'Couchbase Credentials API';
8
+ this.documentationUrl = 'https://github.com/maruakinu/n8n-nodes-couchbase.git';
8
9
  this.properties = [
9
10
  {
10
- displayName: 'User Name',
11
- name: 'username',
11
+ displayName: 'Connection String',
12
+ name: 'MyConnection',
13
+ type: 'string',
14
+ default: '',
15
+ },
16
+ {
17
+ displayName: 'Username',
18
+ name: 'MyUsername',
12
19
  type: 'string',
13
20
  default: '',
14
21
  },
15
22
  {
16
23
  displayName: 'Password',
17
- name: 'password',
24
+ name: 'MyPassword',
18
25
  type: 'string',
19
- typeOptions: {
20
- password: true,
21
- },
22
26
  default: '',
23
27
  },
24
- ];
25
- this.authenticate = {
26
- type: 'generic',
27
- properties: {
28
- auth: {
29
- username: '={{ $credentials.username }}',
30
- password: '={{ $credentials.password }}',
31
- },
32
- qs: {
33
- n8n: 'rocks',
34
- },
28
+ {
29
+ displayName: 'Bucket',
30
+ name: 'MyBucket',
31
+ type: 'string',
32
+ default: '',
35
33
  },
36
- };
37
- this.test = {
38
- request: {
39
- baseURL: 'https://example.com/',
40
- url: '',
34
+ {
35
+ displayName: 'Scope',
36
+ name: 'MyScope',
37
+ type: 'string',
38
+ default: '',
39
+ },
40
+ {
41
+ displayName: 'Collection',
42
+ name: 'MyCollection',
43
+ type: 'string',
44
+ default: '',
41
45
  },
42
- };
46
+ ];
43
47
  }
44
48
  }
45
49
  exports.CouchbaseCredentialsApi = CouchbaseCredentialsApi;
@@ -1 +1 @@
1
- {"version":3,"file":"CouchbaseCredentialsApi.credentials.js","sourceRoot":"","sources":["../../credentials/CouchbaseCredentialsApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,uBAAuB;IAApC;QACC,SAAI,GAAG,uBAAuB,CAAC;QAC/B,gBAAW,GAAG,yBAAyB,CAAC;QACxC,eAAU,GAAsB;YAI/B;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;aACX;SACD,CAAC;QAKF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,IAAI,EAAE;oBACL,QAAQ,EAAE,8BAA8B;oBACxC,QAAQ,EAAE,8BAA8B;iBACxC;gBACD,EAAE,EAAE;oBAEH,GAAG,EAAE,OAAO;iBACZ;aACD;SACD,CAAC;QAGF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,sBAAsB;gBAC/B,GAAG,EAAE,EAAE;aACP;SACD,CAAC;IACH,CAAC;CAAA;AAhDD,0DAgDC"}
1
+ {"version":3,"file":"CouchbaseCredentialsApi.credentials.js","sourceRoot":"","sources":["../../credentials/CouchbaseCredentialsApi.credentials.ts"],"names":[],"mappings":";;;AAKA,MAAa,uBAAuB;IAApC;QACC,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,2BAA2B,CAAC;QAC1C,qBAAgB,GAAG,sDAAsD,CAAC;QAC1E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBAId,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;SACD,CAAC;IAQH,CAAC;CAAA;AApDD,0DAoDC"}
@@ -7,7 +7,7 @@ class CouchbaseNode {
7
7
  constructor() {
8
8
  this.description = {
9
9
  displayName: 'Couchbase',
10
- name: 'couchbaseDB',
10
+ name: 'couchbaseNode',
11
11
  icon: 'file:CBLogomark.svg',
12
12
  group: ['transform'],
13
13
  version: 1,
@@ -17,6 +17,12 @@ class CouchbaseNode {
17
17
  },
18
18
  inputs: ['main'],
19
19
  outputs: ['main'],
20
+ credentials: [
21
+ {
22
+ name: 'couchbaseApi',
23
+ required: false,
24
+ },
25
+ ],
20
26
  properties: [
21
27
  {
22
28
  displayName: 'Operation',
@@ -25,10 +31,16 @@ class CouchbaseNode {
25
31
  noDataExpression: true,
26
32
  options: [
27
33
  {
28
- name: 'Insert',
34
+ name: 'Create',
29
35
  value: 'insert',
30
- description: 'Insert document in couchbase',
31
- action: 'Insert document in couchbase',
36
+ description: 'Create document in couchbase',
37
+ action: 'Create document in couchbase',
38
+ },
39
+ {
40
+ name: 'Read',
41
+ value: 'find',
42
+ description: 'Read document in couchbase',
43
+ action: 'Read document in couchbase',
32
44
  },
33
45
  {
34
46
  name: 'Update',
@@ -37,86 +49,34 @@ class CouchbaseNode {
37
49
  action: 'Update document in couchbase',
38
50
  },
39
51
  {
40
- name: 'Remove',
52
+ name: 'Delete',
41
53
  value: 'remove',
42
- description: 'Remove document in couchbase',
43
- action: 'Remove document in couchbase',
54
+ description: 'Delete document in couchbase',
55
+ action: 'Delete document in couchbase',
44
56
  },
45
57
  ],
46
58
  default: 'insert',
47
59
  },
48
60
  {
49
- displayName: 'Username',
50
- name: 'myUsername',
51
- type: 'string',
52
- displayOptions: {
53
- show: {
54
- operation: ['insert', 'update', 'remove'],
55
- },
56
- },
57
- default: '',
58
- placeholder: 'Enter Your Username',
59
- description: 'The description text',
60
- },
61
- {
62
- displayName: 'Password',
63
- name: 'myPassword',
64
- type: 'string',
65
- displayOptions: {
66
- show: {
67
- operation: ['insert', 'update', 'remove'],
68
- },
69
- },
70
- default: '',
71
- placeholder: 'Enter Your Password',
72
- description: 'The description text',
73
- },
74
- {
75
- displayName: 'Bucket',
76
- name: 'myBucket',
77
- type: 'string',
78
- displayOptions: {
79
- show: {
80
- operation: ['insert', 'update', 'remove'],
81
- },
82
- },
83
- default: '',
84
- placeholder: 'Enter Bucket Name',
85
- description: 'The description text',
86
- },
87
- {
88
- displayName: 'Scope',
89
- name: 'myScope',
90
- type: 'string',
91
- displayOptions: {
92
- show: {
93
- operation: ['insert', 'update', 'remove'],
94
- },
95
- },
96
- default: '',
97
- placeholder: 'Enter Scope Name',
98
- description: 'The description text',
99
- },
100
- {
101
- displayName: 'Colection',
102
- name: 'myCollection',
61
+ displayName: 'Value',
62
+ name: 'myDocument',
103
63
  type: 'string',
104
64
  displayOptions: {
105
65
  show: {
106
- operation: ['insert', 'update', 'remove'],
66
+ operation: ['insert'],
107
67
  },
108
68
  },
109
69
  default: '',
110
- placeholder: 'Enter Collection Name',
70
+ placeholder: 'Placeholder value',
111
71
  description: 'The description text',
112
72
  },
113
73
  {
114
- displayName: 'Value',
74
+ displayName: 'Document ID',
115
75
  name: 'myDocument',
116
76
  type: 'string',
117
77
  displayOptions: {
118
78
  show: {
119
- operation: ['insert'],
79
+ operation: ['update'],
120
80
  },
121
81
  },
122
82
  default: '',
@@ -124,8 +84,8 @@ class CouchbaseNode {
124
84
  description: 'The description text',
125
85
  },
126
86
  {
127
- displayName: 'ID',
128
- name: 'myDocument',
87
+ displayName: 'Value',
88
+ name: 'myValue',
129
89
  type: 'string',
130
90
  displayOptions: {
131
91
  show: {
@@ -137,12 +97,12 @@ class CouchbaseNode {
137
97
  description: 'The description text',
138
98
  },
139
99
  {
140
- displayName: 'Value',
141
- name: 'myValue',
100
+ displayName: 'Document ID',
101
+ name: 'myDocument',
142
102
  type: 'string',
143
103
  displayOptions: {
144
104
  show: {
145
- operation: ['update'],
105
+ operation: ['remove'],
146
106
  },
147
107
  },
148
108
  default: '',
@@ -150,12 +110,12 @@ class CouchbaseNode {
150
110
  description: 'The description text',
151
111
  },
152
112
  {
153
- displayName: 'ID',
113
+ displayName: 'Document ID',
154
114
  name: 'myDocument',
155
115
  type: 'string',
156
116
  displayOptions: {
157
117
  show: {
158
- operation: ['remove'],
118
+ operation: ['find'],
159
119
  },
160
120
  },
161
121
  default: '',
@@ -166,41 +126,42 @@ class CouchbaseNode {
166
126
  };
167
127
  }
168
128
  async execute() {
129
+ const credentials = await this.getCredentials('couchbaseApi');
130
+ const myConnection = credentials.MyConnection;
131
+ const myUsername = credentials.MyUsername;
132
+ const myPassword = credentials.MyPassword;
133
+ const myBucket = credentials.MyBucket;
134
+ const myScope = credentials.MyScope;
135
+ const myCollection = credentials.MyCollection;
169
136
  const items = this.getInputData();
170
137
  let item;
171
138
  let item2;
139
+ let item3;
140
+ let item4;
172
141
  let myDocument;
173
142
  let myNewValue;
174
- let myUsername;
175
- let myPassword;
176
- let myBucket;
177
- let myScope;
178
- let myCollection;
143
+ let readJson;
179
144
  for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
180
145
  try {
181
146
  myNewValue = this.getNodeParameter('myValue', itemIndex, '');
182
147
  myDocument = this.getNodeParameter('myDocument', itemIndex, '');
183
- myUsername = this.getNodeParameter('myUsername', itemIndex, '');
184
- myPassword = this.getNodeParameter('myPassword', itemIndex, '');
185
- myBucket = this.getNodeParameter('myBucket', itemIndex, '');
186
- myScope = this.getNodeParameter('myScope', itemIndex, '');
187
- myCollection = this.getNodeParameter('myCollection', itemIndex, '');
188
- const clusterConnStr = "couchbase://127.0.0.1/?connectionTimeout=1200";
148
+ const clusterConnStr = myConnection;
189
149
  const username = myUsername;
190
150
  const password = myPassword;
191
151
  const bucketName = myBucket;
192
152
  const cluster = await (0, couchbase_1.connect)(clusterConnStr, {
193
153
  username: username,
194
154
  password: password,
155
+ configProfile: 'wanDevelopment'
195
156
  });
196
157
  const bucket = cluster.bucket(bucketName);
197
158
  const collection = bucket
198
159
  .scope(myScope)
199
160
  .collection(myCollection);
200
- item = items[itemIndex];
201
- item.json['myDocument'] = myDocument;
202
161
  const operation = this.getNodeParameter('operation', 0);
203
162
  if (operation === 'insert') {
163
+ item = items[itemIndex];
164
+ item.json['myDocument'] = myDocument;
204
165
  await collection.insert(myDocument, item.json);
205
166
  }
206
167
  else if (operation === 'update') {
@@ -211,6 +172,17 @@ class CouchbaseNode {
211
172
  else if (operation === 'remove') {
212
173
  await collection.remove(myDocument);
213
174
  }
175
+ else if (operation === 'find') {
176
+ const getResult = await collection.get(myDocument);
177
+ console.log('Get Result:', getResult);
178
+ readJson = JSON.stringify(getResult.content);
179
+ console.log('Get Result in String:', readJson);
180
+ item3 = items[itemIndex];
181
+ item3.json[''] = readJson;
182
+ item4 = items[itemIndex];
183
+ item4.json[' '];
184
+ await collection.get(myDocument);
185
+ }
214
186
  }
215
187
  catch (error) {
216
188
  if (this.continueOnFail()) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CouchbaseNode.node.js","sourceRoot":"","sources":["../../../nodes/CouchbaseDB/CouchbaseNode.node.ts"],"names":[],"mappings":"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"}