@cocreate/crud-server 1.5.0 → 1.7.0

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # [1.7.0](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.6.0...v1.7.0) (2022-05-28)
2
+
3
+
4
+ ### Features
5
+
6
+ * readDatabases returns a list of databases in DB ([5c65622](https://github.com/CoCreate-app/CoCreate-crud-server/commit/5c65622908c5a154ade344aab48fb36b816470d6))
7
+
8
+ # [1.6.0](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.5.1...v1.6.0) (2022-05-25)
9
+
10
+
11
+ ### Features
12
+
13
+ * auto detects and updates data type ([ddb1391](https://github.com/CoCreate-app/CoCreate-crud-server/commit/ddb1391928a8a7acccd8d9e4c920adfdeb63f002))
14
+
15
+ ## [1.5.1](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.5.0...v1.5.1) (2022-05-17)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * get orgId from socketInfo ([da03da3](https://github.com/CoCreate-app/CoCreate-crud-server/commit/da03da39aa383c71a802bbbfa9ecea5b637c5262))
21
+ * reorder broadcast params ([96deccb](https://github.com/CoCreate-app/CoCreate-crud-server/commit/96deccb415e47dbfbfad4311985b3a7082cb57ff))
22
+
1
23
  # [1.5.0](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.4.4...v1.5.0) (2022-05-14)
2
24
 
3
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/crud-server",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "CoCreate-crud-server",
5
5
  "keywords": [
6
6
  "cocreate-crud",
package/src/crud.js CHANGED
@@ -35,21 +35,21 @@ class CoCreateCrud {
35
35
  // let isFlat = req_data.isFlat == false ? false : true;
36
36
  // const response_data = isFlat ? encodeObject(response) : response;
37
37
  // const response_data = response;
38
- self.broadcast('createDocument', socket, response, socketInfo)
38
+ self.broadcast(socket, 'createDocument', response, socketInfo)
39
39
  } else {
40
- self.wsManager.send(socket, 'ServerError', error, null, socketInfo);
40
+ self.wsManager.send(socket, 'ServerError', error, socketInfo);
41
41
  }
42
42
  });
43
43
  }catch(error){
44
44
  console.log('createDocument error', error);
45
- self.wsManager.send(socket, 'ServerError', 'error', null, socketInfo);
45
+ self.wsManager.send(socket, 'ServerError', 'error', socketInfo);
46
46
  }
47
47
  }
48
48
 
49
49
  /** Read Document **/
50
50
  async readDocument(socket, req_data, socketInfo) {
51
51
  if (!req_data['collection'] || req_data['collection'] == 'null' || typeof req_data['collection'] !== 'string') {
52
- this.wsManager.send(socket, 'ServerError', 'error', null, socketInfo);
52
+ this.wsManager.send(socket, 'ServerError', 'error', socketInfo);
53
53
  return;
54
54
  }
55
55
  const self = this;
@@ -82,14 +82,14 @@ class CoCreateCrud {
82
82
  }
83
83
 
84
84
  let isFlat = req_data.isFlat == true ? true : false;
85
- self.wsManager.send(socket, 'readDocument', { ...req_data, data: isFlat ? encodeObject(tmp) : tmp }, req_data['organization_id'], socketInfo);
85
+ self.wsManager.send(socket, 'readDocument', { ...req_data, data: isFlat ? encodeObject(tmp) : tmp }, socketInfo);
86
86
  } else {
87
- self.wsManager.send(socket, 'ServerError', error, null, socketInfo);
87
+ self.wsManager.send(socket, 'readDocument error', req_data, socketInfo);
88
88
  }
89
89
  });
90
90
  } catch (error) {
91
91
  console.log('readDocument error', error, req_data);
92
- self.wsManager.send(socket, 'ServerError', 'error', null, socketInfo);
92
+ self.wsManager.send(socket, 'ServerError', 'error', socketInfo);
93
93
  }
94
94
  }
95
95
 
@@ -108,11 +108,32 @@ class CoCreateCrud {
108
108
  console.log(err);
109
109
  }
110
110
  const query = {"_id": objId };
111
- const update = {};
111
+ const update = {"$set": {}};
112
112
 
113
113
 
114
114
  if( req_data['set'] )
115
- update['$set'] = replaceArray(req_data['set']);
115
+ for (const [key, value] of Object.entries(req_data['set'])) {
116
+ let val;
117
+ let valueType = typeof value;
118
+ switch(valueType) {
119
+ case 'string':
120
+ val = value
121
+ break;
122
+ case 'number':
123
+ val = Number(value)
124
+ break;
125
+ case 'object':
126
+ if (Array.isArray(value))
127
+ val = new Array(...value)
128
+ else
129
+ val = new Object(value)
130
+ break;
131
+ default:
132
+ val = value
133
+ }
134
+ update.$set[key] = val
135
+ }
136
+
116
137
  if( req_data['unset'] )
117
138
  update['$unset'] = req_data['unset'].reduce((r, d) => {r[d] = ""; return r}, {});
118
139
  update['$set']['organization_id'] = req_data['organization_id'];
@@ -136,15 +157,15 @@ class CoCreateCrud {
136
157
  if(req_data['unset'])
137
158
  response['delete_fields'] = req_data['unset'];
138
159
 
139
- self.broadcast('updateDocument', socket, response, socketInfo)
160
+ self.broadcast(socket, 'updateDocument', response, socketInfo)
140
161
  }).catch((error) => {
141
162
  console.log('error', error)
142
- self.wsManager.send(socket, 'ServerError', error, null, socketInfo);
163
+ self.wsManager.send(socket, 'ServerError', error, socketInfo);
143
164
  });
144
165
 
145
166
  } catch (error) {
146
167
  console.log(error)
147
- self.wsManager.send(socket, 'updateDocumentError', error, req_data['organization_id']);
168
+ self.wsManager.send(socket, 'updateDocumentError', error, socketInfo);
148
169
  }
149
170
  }
150
171
 
@@ -162,18 +183,18 @@ class CoCreateCrud {
162
183
  collection.deleteOne(query, function(error, result) {
163
184
  if (!error) {
164
185
  let response = { ...req_data }
165
- self.broadcast('deleteDocument', socket, response, socketInfo)
186
+ self.broadcast(socket, 'deleteDocument', response, socketInfo)
166
187
  } else {
167
- self.wsManager.send(socket, 'ServerError', error, null, socketInfo);
188
+ self.wsManager.send(socket, 'ServerError', error, socketInfo);
168
189
  }
169
190
  })
170
191
  } catch (error) {
171
192
  console.log(error);
172
- self.wsManager.send(socket, 'ServerError', 'error', null, socketInfo);
193
+ self.wsManager.send(socket, 'ServerError', 'error', socketInfo);
173
194
  }
174
195
  }
175
196
 
176
- broadcast(component, socket, response, socketInfo) {
197
+ broadcast(socket, component, response, socketInfo) {
177
198
  this.wsManager.broadcast(socket, response.namespace || response['organization_id'], response.room, component, response, socketInfo);
178
199
  process.emit('changed-document', response)
179
200
  }
@@ -0,0 +1,48 @@
1
+ const {ObjectId} = require("mongodb");
2
+ const {encodeObject, replaceArray} = require("./utils.crud.js")
3
+
4
+
5
+ class CoCreateDatabases {
6
+ constructor(wsManager, dbClient) {
7
+ this.wsManager = wsManager
8
+ this.dbClient = dbClient
9
+ this.init();
10
+ }
11
+
12
+ init() {
13
+ if (this.wsManager) {
14
+ this.wsManager.on('readDatabases', (socket, data, socketInfo) => this.readDatabases(socket, data, socketInfo));
15
+ }
16
+ // this.readDatabases()
17
+ }
18
+
19
+ /** Create Document **/
20
+ async readDatabases(socket, req_data, socketInfo){
21
+ const self = this;
22
+ // if(!req_data.data) return;
23
+
24
+ try {
25
+ var db = this.dbClient.db().admin();
26
+
27
+ // List all the available databases
28
+ db.listDatabases(function(err, dbs) {
29
+ if (dbs.databases.length > 0){
30
+ console.log('dbs', dbs)
31
+ }
32
+
33
+ // db.close();
34
+ })
35
+ } catch(error) {
36
+ console.log('readDatabases error', error);
37
+ self.wsManager.send(socket, 'ServerError', 'error', socketInfo);
38
+ }
39
+ }
40
+
41
+
42
+ broadcast(socket, component, response, socketInfo) {
43
+ this.wsManager.broadcast(socket, response.namespace || response['organization_id'], response.room, component, response, socketInfo);
44
+ process.emit('changed-document', response)
45
+ }
46
+ }
47
+
48
+ module.exports = CoCreateDatabases;
package/src/index.js CHANGED
@@ -3,9 +3,11 @@
3
3
  const crud = require('./crud');
4
4
  const list = require('./list');
5
5
  const backup = require('./backup');
6
+ const database = require('./database');
6
7
 
7
8
  module.exports.init = function(wsManager, dbClient) {
8
9
  new crud(wsManager, dbClient);
9
10
  new list(wsManager, dbClient);
10
11
  new backup(wsManager, dbClient);
12
+ new database(wsManager, dbClient);
11
13
  }
package/src/list.js CHANGED
@@ -113,15 +113,15 @@ class CoCreateList {
113
113
 
114
114
  result_data = result;
115
115
  }
116
- self.wsManager.send(socket, 'readDocuments', { ...req_data, data: result_data, operator: {...operator, total: total}}, req_data['organization_id'], socketInfo);
116
+ self.wsManager.send(socket, 'readDocuments', { ...req_data, data: result_data, operator: {...operator, total: total}}, socketInfo);
117
117
  } else {
118
118
  console.log(error)
119
- self.wsManager.send(socket, 'ServerError', error, null, socketInfo);
119
+ self.wsManager.send(socket, 'ServerError', error, socketInfo);
120
120
  }
121
121
  })
122
122
  } catch (error) {
123
123
  console.log('readDocuments error', error);
124
- this.wsManager.send(socket, 'ServerError', 'error', null, socketInfo);
124
+ this.wsManager.send(socket, 'ServerError', 'error', socketInfo);
125
125
  }
126
126
  }
127
127
 
@@ -131,12 +131,12 @@ class CoCreateList {
131
131
  const db = this.dbClient.db(data['organization_id']);
132
132
  db.listCollections().toArray(function(error, result) {
133
133
  if (!error && result && result.length > 0) {
134
- self.wsManager.send(socket, 'readCollections', {...data, data: result }, data['organization_id'], socketInfo);
134
+ self.wsManager.send(socket, 'readCollections', {...data, data: result }, socketInfo);
135
135
  }
136
136
  })
137
137
  } catch(error) {
138
138
  console.log('readCollections error', error);
139
- this.wsManager.send(socket, 'ServerError', 'error', null, socketInfo);
139
+ this.wsManager.send(socket, 'ServerError', 'error', socketInfo);
140
140
  }
141
141
  }
142
142