@cocreate/crud-server
Advanced tools
Comparing version 1.10.1 to 1.11.0
@@ -0,1 +1,20 @@ | ||
# [1.11.0](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.10.1...v1.11.0) (2022-10-01) | ||
### Bug Fixes | ||
* broadcast params reduced to socket, message, data ([ec9c8f2](https://github.com/CoCreate-app/CoCreate-crud-server/commit/ec9c8f259e516424ef95433904a0e89d2aa0c727)) | ||
* bump dependencies ([b5b9350](https://github.com/CoCreate-app/CoCreate-crud-server/commit/b5b9350dbcb1b20fc945542a600d526ddb78fb91)) | ||
* createDocument inserts _id in the data object ([113c2ff](https://github.com/CoCreate-app/CoCreate-crud-server/commit/113c2ffb3d0a291f3af8ba645f709b1b5811089d)) | ||
* createQuery ObjectId ([ec79e40](https://github.com/CoCreate-app/CoCreate-crud-server/commit/ec79e40b81760e347ce5d8d70ed28f3494c49538)) | ||
* filter value can be an object or an array ([75cd195](https://github.com/CoCreate-app/CoCreate-crud-server/commit/75cd19560d8086f01a05f55e76102793789ec1d1)) | ||
* merged crud and list ([acff218](https://github.com/CoCreate-app/CoCreate-crud-server/commit/acff21831b2ca1274bc5af775f7d3758f2e55663)) | ||
* relocate and import filter.js from @cocreate/filter ([b8bab38](https://github.com/CoCreate-app/CoCreate-crud-server/commit/b8bab3882b5ece91115a4568aa80bc5eca2c80f3)) | ||
### Features | ||
* config now accessible from socket.config ([2d892ff](https://github.com/CoCreate-app/CoCreate-crud-server/commit/2d892ff961cb48187f8253a4f3778719cb764d1c)) | ||
* if data.returnDocument = false only defined names are returned ([652f624](https://github.com/CoCreate-app/CoCreate-crud-server/commit/652f6242c947d3b46d01deaea784f964f43450fd)) | ||
## [1.10.1](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.10.0...v1.10.1) (2022-09-01) | ||
@@ -2,0 +21,0 @@ |
{ | ||
"name": "@cocreate/crud-server", | ||
"version": "1.10.1", | ||
"version": "1.11.0", | ||
"description": "CoCreate-crud-server", | ||
@@ -43,3 +43,3 @@ "keywords": [ | ||
"dependencies": { | ||
"@cocreate/docs": "^1.3.6", | ||
"@cocreate/docs": "^1.3.14", | ||
"csvtojson": "^2.0.10", | ||
@@ -46,0 +46,0 @@ "json-2-csv": "^3.10.3", |
@@ -16,7 +16,7 @@ const json2csv = require("json-2-csv") | ||
if (this.wsManager) { | ||
// this.wsManager.on('exportDB', (socket, data, socketInfo) => this.exportData(socket, data, socketInfo)); | ||
// this.wsManager.on('importDB', (socket, data, socketInfo) => this.importData(socket, data, socketInfo)); | ||
// this.wsManager.on('importFile2DB', (socket, data, socketInfo) => this.importData(socket, data, socketInfo)); | ||
// this.wsManager.on('exportDB', (socket, data) => this.exportData(socket, data)); | ||
// this.wsManager.on('importDB', (socket, data) => this.importData(socket, data)); | ||
// this.wsManager.on('importFile2DB', (socket, data) => this.importData(socket, data)); | ||
// this.wsManager.on('downloadData', (socket, data, socketInfo) => this.downloadData(socket, data, socketInfo)) | ||
// this.wsManager.on('downloadData', (socket, data) => this.downloadData(socket, data)) | ||
} | ||
@@ -32,3 +32,3 @@ } | ||
**/ | ||
// async downloadData(socket, data, socketInfo) { | ||
// async downloadData(socket, data) { | ||
// const export_type = data.type || "json"; | ||
@@ -39,3 +39,3 @@ | ||
// const result = data.data; | ||
// const orgId = socketInfo ? socketInfo.orgId : ""; | ||
// const orgId = socket.config.orgId ; | ||
// if (export_type === 'csv') { | ||
@@ -66,3 +66,3 @@ // binaryData = await json2csv.json2csvAsync(JSON.parse(JSON.stringify(result)), { | ||
**/ | ||
// async exportData(socket, data, socketInfo) { | ||
// async exportData(socket, data) { | ||
// const self = this; | ||
@@ -75,3 +75,3 @@ | ||
// var collection = this.dbClient.db(data['namespace']).collection(data["collection"]); | ||
// const orgId = socketInfo ? socketInfo.orgId : ""; | ||
// const orgId = socket.config.orgId | ||
@@ -100,3 +100,3 @@ // var query = {}; | ||
// async setImportData(socket, data, socketInfo) { | ||
// async setImportData(socket, data) { | ||
// this.importCollection = data['collection'] | ||
@@ -107,3 +107,3 @@ // this.importType = data['import_type']; | ||
// async importData(socket, data, socketInfo) { | ||
// async importData(socket, data) { | ||
// const importCollection = data['collection'] | ||
@@ -116,3 +116,3 @@ // const importType = data['import_type']; | ||
// const self = this; | ||
// // const orgId = socketInfo ? socketInfo.orgId : ""; | ||
// // const orgId = socket.config.orgId | ||
// if (!importCollection || !importType) { | ||
@@ -119,0 +119,0 @@ // return; |
421
src/crud.js
const {ObjectId} = require("mongodb"); | ||
const {replaceArray} = require("./utils.crud.js") | ||
const {searchData, sortData} = require("@cocreate/filter") | ||
class CoCreateCrud { | ||
@@ -14,9 +16,11 @@ constructor(wsManager, dbClient) { | ||
if (this.wsManager) { | ||
this.wsManager.on('createDocument', (socket, data, socketInfo) => this.createDocument(socket, data, socketInfo)); | ||
this.wsManager.on('readDocument', (socket, data, socketInfo) => this.readDocument(socket, data, socketInfo)) | ||
this.wsManager.on('updateDocument', (socket, data, socketInfo) => this.updateDocument(socket, data, socketInfo)) | ||
this.wsManager.on('deleteDocument', (socket, data, socketInfo) => this.deleteDocument(socket, data, socketInfo)) | ||
this.wsManager.on('createCollection', (socket, data, socketInfo) => this.createCollection(socket, data, socketInfo)); | ||
this.wsManager.on('updateCollection', (socket, data, socketInfo) => this.updateCollection(socket, data, socketInfo)) | ||
this.wsManager.on('deleteCollection', (socket, data, socketInfo) => this.deleteCollection(socket, data, socketInfo)) | ||
this.wsManager.on('createDocument', (socket, data) => this.createDocument(socket, data)) | ||
this.wsManager.on('readDocument', (socket, data) => this.readDocument(socket, data)) | ||
this.wsManager.on('updateDocument', (socket, data) => this.updateDocument(socket, data)) | ||
this.wsManager.on('deleteDocument', (socket, data) => this.deleteDocument(socket, data)) | ||
this.wsManager.on('readDocuments', (socket, data) => this.readDocuments(socket, data)) | ||
this.wsManager.on('createCollection', (socket, data) => this.createCollection(socket, data)) | ||
this.wsManager.on('updateCollection', (socket, data) => this.updateCollection(socket, data)) | ||
this.wsManager.on('deleteCollection', (socket, data) => this.deleteCollection(socket, data)) | ||
this.wsManager.on('readCollections', (socket, data) => this.readCollections(socket, data)) | ||
} | ||
@@ -26,18 +30,19 @@ } | ||
/** Create Document **/ | ||
async createDocument(socket, req_data, socketInfo){ | ||
async createDocument(socket, data){ | ||
const self = this; | ||
if(!req_data.data) return; | ||
if(!data.data) return; | ||
try{ | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
const collection = db.collection(req_data["collection"]); | ||
let insertData = replaceArray(req_data.data); | ||
insertData['organization_id'] = req_data['organization_id']; | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
let insertData = replaceArray(data.data); | ||
insertData['organization_id'] = data['organization_id']; | ||
collection.insertOne(insertData, function(error, result) { | ||
if(!error && result){ | ||
const response = {...req_data, document_id: `${result.insertedId}`, data: insertData } | ||
self.broadcast(socket, 'createDocument', response, socketInfo) | ||
const response = {...data, document_id: `${result.insertedId}`, data: insertData } | ||
response.data['_id'] = result.insertedId; | ||
self.broadcast(socket, 'createDocument', response) | ||
} else { | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
@@ -47,3 +52,3 @@ }); | ||
console.log('createDocument error', error); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
@@ -53,5 +58,5 @@ } | ||
/** Read Document **/ | ||
async readDocument(socket, req_data, socketInfo) { | ||
if (!req_data['collection'] || req_data['collection'] == 'null' || typeof req_data['collection'] !== 'string') { | ||
this.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
async readDocument(socket, data) { | ||
if (!data['collection'] || data['collection'] == 'null' || typeof data['collection'] !== 'string') { | ||
this.wsManager.send(socket, 'ServerError', 'error'); | ||
return; | ||
@@ -62,36 +67,30 @@ } | ||
try { | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
const collection = db.collection(req_data["collection"]); | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
const query = { | ||
"_id": new ObjectId(req_data["document_id"]) | ||
}; | ||
if (req_data['organization_id']) { | ||
query['organization_id'] = req_data['organization_id']; | ||
const {query, sort} = this.getFilters(data); | ||
if (data['organization_id']) { | ||
query['organization_id'] = data['organization_id']; | ||
} | ||
collection.find(query).toArray(function(error, result) { | ||
collection.find(query).sort(sort).toArray(function(error, result) { | ||
if (!error && result && result.length > 0) { | ||
let tmp = result[0]; | ||
if (req_data['exclude_fields']) { | ||
req_data['exclude_fields'].forEach(function(field) { | ||
delete tmp[field]; | ||
}) | ||
} | ||
if (req_data.data) { | ||
// ToDo: returns values of defined names | ||
if (data.returnDocument == false && data.data) { | ||
let resp = {}; | ||
resp['_id'] = tmp['_id'] | ||
req_data.data.forEach((f) => resp[f] = tmp[f]) | ||
data.data.forEach((f) => resp[f] = tmp[f]) | ||
tmp = resp; | ||
} | ||
self.wsManager.send(socket, 'readDocument', { ...req_data, data: tmp }, socketInfo); | ||
data.data = tmp | ||
self.wsManager.send(socket, 'readDocument', data); | ||
} else { | ||
self.wsManager.send(socket, 'readDocument error', req_data, socketInfo); | ||
self.wsManager.send(socket, 'readDocument error', data); | ||
} | ||
}); | ||
} catch (error) { | ||
console.log('readDocument error', error, req_data); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
console.log('readDocument error', error, data); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
@@ -101,85 +100,60 @@ } | ||
/** Update Document **/ | ||
async updateDocument(socket, req_data, socketInfo) { | ||
async updateDocument(socket, data) { | ||
const self = this; | ||
try { | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
const collection = db.collection(req_data["collection"]); | ||
let objId = new ObjectId(); | ||
try { | ||
if (req_data["document_id"]) { | ||
objId = new ObjectId(req_data["document_id"]); | ||
} | ||
} catch (err) { | ||
console.log(err); | ||
} | ||
try { | ||
let {query, sort} = this.getFilters(data); | ||
if (data['data'] && data['data']['_id']) | ||
delete data['data']['_id'] | ||
if (req_data['data'] && req_data['data']['_id']) | ||
delete req_data['data']['_id'] | ||
const query = {"_id": objId }; | ||
let update = {}, projection = {}; | ||
if( typeof req_data['data'] === 'object' ) { | ||
update['$set'] = {} | ||
for (const [key, value] of Object.entries(replaceArray(req_data['data']))) { | ||
let val; | ||
let valueType = typeof value; | ||
switch(valueType) { | ||
case 'string': | ||
val = value | ||
break; | ||
case 'number': | ||
val = Number(value) | ||
break; | ||
case 'object': | ||
if (Array.isArray(value)) | ||
val = new Array(...value) | ||
else | ||
val = new Object(value) | ||
break; | ||
default: | ||
val = value | ||
} | ||
update['$set'][key] = val | ||
} | ||
update['$set']['organization_id'] = req_data['organization_id']; | ||
let update = {}, projection = {}, returnNewDocument = false; | ||
if (data.data) { | ||
update['$set'] = this.valueTypes(data.data) | ||
update['$set']['organization_id'] = data['organization_id']; | ||
if (update['$set']['_id']) | ||
delete update['$set']['_id'] | ||
Object.keys(update['$set']).forEach(x => { | ||
projection[x] = 1 | ||
}) | ||
} | ||
if( data['deleteName'] ) { | ||
update['$unset'] = replaceArray(data['deleteName']); | ||
} | ||
if( req_data['deleteName'] ) { | ||
update['$unset'] = replaceArray(req_data['deleteName']); | ||
} | ||
if( req_data['updateName'] ) { | ||
update['$rename'] = replaceArray(req_data['updateName']) | ||
if( data['updateName'] ) { | ||
update['$rename'] = replaceArray(data['updateName']) | ||
for (const [key, value] of Object.entries(update['$rename'])) { | ||
let newValue = replaceArray({[value]: value}) | ||
let oldkey = key; | ||
for (const [key] of Object.entries(newValue)) { | ||
update['$rename'][oldkey] = key | ||
if (/\.([0-9]*)/g.test(key) || /\[([0-9]*)\]/g.test(value)) { | ||
console.log('key is array', /\[([0-9]*)\]/g.test(value), /\.([0-9]*)/g.test(key)) | ||
} else { | ||
let newValue = replaceArray({[value]: value}) | ||
let oldkey = key; | ||
for (const [key] of Object.entries(newValue)) { | ||
update['$rename'][oldkey] = key | ||
} | ||
} | ||
} | ||
returnNewDocument == true | ||
} | ||
collection.updateOne( query, update, { | ||
upsert: req_data.upsert || false, | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
collection.findOneAndUpdate( query, update, { | ||
returnOriginal: false, | ||
returnNewDocument: returnNewDocument || false, | ||
upsert: data.upsert || false, | ||
projection: projection, | ||
} | ||
).then((error, result) => { | ||
if (!error) { | ||
let response = { ...req_data, data: update['$set'] }; | ||
self.broadcast(socket, 'updateDocument', response, socketInfo) | ||
).then((result) => { | ||
if (result) { | ||
update['$set']['_id'] = data.data._id || data.document_id | ||
data.data = update['$set'] | ||
self.broadcast(socket, 'updateDocument', data) | ||
} else { | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
}).catch((error) => { | ||
console.log('error', error) | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
}); | ||
@@ -189,3 +163,3 @@ | ||
console.log(error) | ||
self.wsManager.send(socket, 'updateDocumentError', error, socketInfo); | ||
self.wsManager.send(socket, 'updateDocumentError', error); | ||
} | ||
@@ -195,10 +169,10 @@ } | ||
/** Delete Document **/ | ||
async deleteDocument(socket, req_data, socketInfo) { | ||
async deleteDocument(socket, data) { | ||
const self = this; | ||
try { | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
const collection = db.collection(req_data["collection"]); | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
const query = { | ||
"_id": new ObjectId(req_data["document_id"]) | ||
"_id": new ObjectId(data["document_id"]) | ||
}; | ||
@@ -208,6 +182,5 @@ | ||
if (!error) { | ||
let response = { ...req_data } | ||
self.broadcast(socket, 'deleteDocument', response, socketInfo) | ||
self.broadcast(socket, 'deleteDocument', data) | ||
} else { | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
@@ -217,18 +190,45 @@ }) | ||
console.log(error); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
} | ||
async readDocuments(socket, data) { | ||
function sleep(ms) { | ||
return new Promise((resolve) => { | ||
setTimeout(resolve, ms); | ||
}); | ||
} | ||
const self = this; | ||
try { | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
let {query, sort} = this.getFilters(data); | ||
collection.find(query).sort(sort).toArray(function(error, result) { | ||
if (result) { | ||
data['data'] = searchData(result, data.filter) | ||
self.wsManager.send(socket, 'readDocuments', data ); | ||
} else { | ||
console.log(error) | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
}) | ||
} catch (error) { | ||
console.log('readDocuments error', error); | ||
this.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
} | ||
/** Create Collection **/ | ||
async createCollection(socket, req_data, socketInfo) { | ||
async createCollection(socket, data) { | ||
const self = this; | ||
try { | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
db.createCollection(req_data.collection, function(error, result) { | ||
const db = this.dbClient.db(data['organization_id']); | ||
db.createCollection(data.collection, function(error, result) { | ||
if (!error) { | ||
let response = { ...req_data } | ||
self.broadcast(socket, 'createCollection', response, socketInfo) | ||
self.broadcast(socket, 'createCollection', data) | ||
} else { | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
@@ -238,3 +238,3 @@ }) | ||
console.log(error); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
@@ -244,14 +244,13 @@ } | ||
/** Update Collection **/ | ||
async updateCollection(socket, req_data, socketInfo) { | ||
async updateCollection(socket, data) { | ||
const self = this; | ||
try { | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
const collection = db.collection(req_data["collection"]); | ||
collection.rename(req_data.target, function(error, result) { | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
collection.rename(data.target, function(error, result) { | ||
if (!error) { | ||
let response = { ...req_data } | ||
self.broadcast(socket, 'updateCollection', response, socketInfo) | ||
self.broadcast(socket, 'updateCollection', data) | ||
} else { | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
@@ -261,3 +260,3 @@ }) | ||
console.log(error); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
@@ -267,14 +266,13 @@ } | ||
/** Delete Collection **/ | ||
async deleteCollection(socket, req_data, socketInfo) { | ||
async deleteCollection(socket, data) { | ||
const self = this; | ||
try { | ||
const db = this.dbClient.db(req_data['organization_id']); | ||
const collection = db.collection(req_data["collection"]); | ||
const db = this.dbClient.db(data['organization_id']); | ||
const collection = db.collection(data["collection"]); | ||
collection.drop( function(error, result) { | ||
if (!error) { | ||
let response = { ...req_data } | ||
self.broadcast(socket, 'deleteCollection', response, socketInfo) | ||
self.broadcast(socket, 'deleteCollection', data) | ||
} else { | ||
self.wsManager.send(socket, 'ServerError', error, socketInfo); | ||
self.wsManager.send(socket, 'ServerError', error); | ||
} | ||
@@ -284,12 +282,157 @@ }) | ||
console.log(error); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
} | ||
broadcast(socket, component, response, socketInfo) { | ||
this.wsManager.broadcast(socket, response.namespace || response['organization_id'], response.room, component, response, socketInfo); | ||
async readCollections(socket, data) { | ||
try { | ||
const self = this; | ||
data['collection'] = 'collections' | ||
let {query, sort} = this.getFilters(data); | ||
const db = this.dbClient.db(data['organization_id']); | ||
db.listCollections(query).toArray(function(error, result) { | ||
if (!error && result && result.length > 0) { | ||
data.data = sortData(result, sort) | ||
self.wsManager.send(socket, 'readCollections', data); | ||
} | ||
}) | ||
} catch(error) { | ||
console.log('readCollections error', error); | ||
this.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
} | ||
getFilters(data) { | ||
let query = {}, sort = {} | ||
data.filter = { | ||
query: [], | ||
sort: [], | ||
search: { | ||
value: [], | ||
type: "or" | ||
}, | ||
startIndex: 0, | ||
...data.filter | ||
}; | ||
if (data.filter) { | ||
query = this.createQuery(data['filter'].query); | ||
if (data["document_id"]) { | ||
query['_id'] = ObjectId(data["document_id"]); | ||
} | ||
if (data.filter.sort) | ||
data.filter.sort.forEach((order) => { | ||
sort[order.name] = order.type | ||
}); | ||
} | ||
return {query, sort} | ||
} | ||
createQuery(filters, data) { | ||
let query = new Object(); | ||
filters.forEach((item) => { | ||
if (!item.name) { | ||
return; | ||
} | ||
var key = item.name; | ||
if (!query[key]) { | ||
query[key] = {}; | ||
} | ||
if (item.name == "_id") | ||
item.value = ObjectId(item.value) | ||
switch (item.operator) { | ||
case '$contain': | ||
var in_values = []; | ||
item.value.forEach(function(v) { | ||
in_values.push(new RegExp(".*" + v + ".*", "i")); | ||
}); | ||
query[key] = {$in : in_values } | ||
break; | ||
case '$range': | ||
if (item.value[0] !== null && item.value[1] !== null) { | ||
query[key] = {$gte: item.value[0], $lte: item.value[1]}; | ||
} else if (item.value[0] !== null) { | ||
query[key] = {$gte: item.value[0]}; | ||
} else if (item.value[1] !== null) { | ||
query[key] = {$lte: item.value[1]}; | ||
} | ||
break; | ||
case '$eq': | ||
case '$ne': | ||
case '$lt': | ||
case '$lte': | ||
case '$gt': | ||
case '$gte': | ||
query[key][item.operator] = item.value[0] || item.value; | ||
break; | ||
case '$in': | ||
case '$nin': | ||
query[key][item.operator] = item.value; | ||
break; | ||
case '$geoWithin': | ||
try { | ||
let value = JSON.parse(item.value); | ||
if (item.type) { | ||
query[key]['$geoWithin'] = { | ||
[item.type]: value | ||
} | ||
} | ||
} catch(e) { | ||
console.log('geowithin error'); | ||
} | ||
break; | ||
} | ||
}) | ||
//. global search | ||
//. we have to set indexes in text fields ex: db.chart.createIndex({ "$**": "text" }) | ||
// if (data['searchKey']) { | ||
// query["$text"] = {$search: "\"Ni\""}; | ||
// } | ||
return query; | ||
} | ||
valueTypes(data) { | ||
let object = {} | ||
if( typeof data === 'object' ) { | ||
// update['$set'] = {} | ||
for (const [key, value] of Object.entries(replaceArray(data))) { | ||
let val; | ||
let valueType = typeof value; | ||
switch(valueType) { | ||
case 'string': | ||
val = value | ||
break; | ||
case 'number': | ||
val = Number(value) | ||
break; | ||
case 'object': | ||
if (Array.isArray(value)) | ||
val = new Array(...value) | ||
else | ||
val = new Object(value) | ||
break; | ||
default: | ||
val = value | ||
} | ||
object[key] = val | ||
} | ||
return object; | ||
} | ||
} | ||
broadcast(socket, component, response) { | ||
this.wsManager.broadcast(socket, component, response); | ||
process.emit('changed-document', response) | ||
} | ||
} | ||
module.exports = CoCreateCrud; |
@@ -10,3 +10,3 @@ class CoCreateDatabases { | ||
if (this.wsManager) { | ||
this.wsManager.on('readDatabases', (socket, data, socketInfo) => this.readDatabases(socket, data, socketInfo)); | ||
this.wsManager.on('readDatabases', (socket, data) => this.readDatabases(socket, data)); | ||
} | ||
@@ -16,3 +16,3 @@ } | ||
/** Create Document **/ | ||
async readDatabases(socket, req_data, socketInfo){ | ||
async readDatabases(socket, req_data){ | ||
const self = this; | ||
@@ -34,3 +34,3 @@ // if(!req_data.data) return; | ||
console.log('readDatabases error', error); | ||
self.wsManager.send(socket, 'ServerError', 'error', socketInfo); | ||
self.wsManager.send(socket, 'ServerError', 'error'); | ||
} | ||
@@ -40,4 +40,4 @@ } | ||
broadcast(socket, component, response, socketInfo) { | ||
this.wsManager.broadcast(socket, response.namespace || response['organization_id'], response.room, component, response, socketInfo); | ||
broadcast(socket, component, response) { | ||
this.wsManager.broadcast(socket, component, response); | ||
process.emit('changed-document', response) | ||
@@ -44,0 +44,0 @@ } |
'use strict'; | ||
const crud = require('./crud'); | ||
const list = require('./list'); | ||
const backup = require('./backup'); | ||
@@ -17,3 +16,2 @@ const database = require('./database'); | ||
new crud(this.wsManager, this.dbClient); | ||
new list(this.wsManager, this.dbClient); | ||
new backup(this.wsManager, this.dbClient); | ||
@@ -20,0 +18,0 @@ new database(this.wsManager, this.dbClient); |
Sorry, the diff of this file is not supported yet
83474
17
648
Updated@cocreate/docs@^1.3.14