New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@cocreate/crud-server

Package Overview
Dependencies
Maintainers
1
Versions
175
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cocreate/crud-server - npm Package Compare versions

Comparing version 1.12.0 to 1.13.0

src/mongodb/mongodb.js

20

CHANGELOG.md

@@ -0,1 +1,21 @@

# [1.13.0](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.12.0...v1.13.0) (2022-11-21)
### Bug Fixes
* bump [@cocreate](https://github.com/cocreate) dependencies ([a7abd3b](https://github.com/CoCreate-app/CoCreate-crud-server/commit/a7abd3bb30a8d6c46dce0033a2fa67e33ff6e548))
* data.request takes priority ([d8f584e](https://github.com/CoCreate-app/CoCreate-crud-server/commit/d8f584ee978c4ae6dcd66e30a46f66724d60bb04))
* removed data.data ([cc66783](https://github.com/CoCreate-app/CoCreate-crud-server/commit/cc66783f6733ea67ae990f9894a94cea0993f069))
* renamed data.data to data.document ([ed5348f](https://github.com/CoCreate-app/CoCreate-crud-server/commit/ed5348f9a5da8055b885b7e142acd2eec5e02be8))
* set _id using ObjectId ([f2420f6](https://github.com/CoCreate-app/CoCreate-crud-server/commit/f2420f6ac26bc636c76a81fc152e474cdb3075a4))
### Features
* broadcast crud even if no database exist in server ([5b53fc2](https://github.com/CoCreate-app/CoCreate-crud-server/commit/5b53fc27a353f00617638fb36da278e76aa88b79))
* crud can connect to multiple databases, mongodb adapter for crud ([b4e6b61](https://github.com/CoCreate-app/CoCreate-crud-server/commit/b4e6b618e4c6197a9fe1cb2a32f7419898e86d30))
* data response also available as data.document, improved handeling of data[type] ([bb25d9f](https://github.com/CoCreate-app/CoCreate-crud-server/commit/bb25d9f57875bbaa03bd2cafd9333e5f9d0c57f9))
* mongodb - crud multiple databases, collections, and documents ([1ec4b27](https://github.com/CoCreate-app/CoCreate-crud-server/commit/1ec4b278e4ce830d8e452944c144ecb434027c37))
* return documents containing db, database, and collection ([d13db96](https://github.com/CoCreate-app/CoCreate-crud-server/commit/d13db962500fc196af68f6c8e227ce9ba3241188))
# [1.12.0](https://github.com/CoCreate-app/CoCreate-crud-server/compare/v1.11.1...v1.12.0) (2022-10-02)

@@ -2,0 +22,0 @@

4

package.json
{
"name": "@cocreate/crud-server",
"version": "1.12.0",
"version": "1.13.0",
"description": "CoCreate-crud-server",

@@ -43,3 +43,3 @@ "keywords": [

"dependencies": {
"@cocreate/docs": "^1.3.18",
"@cocreate/docs": "^1.3.21",
"csvtojson": "^2.0.10",

@@ -46,0 +46,0 @@ "json-2-csv": "^3.10.3",

'use strict';
const crud = require('./crud');
const backup = require('./backup');
const database = require('./database');
const {replaceArray} = require("./utils.crud.js")
const {searchData, sortData} = require("@cocreate/filter")
const mongodb = require('./mongodb/mongodb');
class CoCreateCrudServer {
constructor(wsManager, dbClient) {
constructor(wsManager) {
this.wsManager = wsManager
this.dbClient = dbClient
this.init()
this.dbs = ['mongodb']
this.mongodb = mongodb
this.init();
}
init() {
if (this.wsManager) {
this.wsManager.on('createDatabase', (socket, data) => this.db(socket, 'createDatabase', data))
this.wsManager.on('readDatabase', (socket, data) => this.db(socket, 'readDatabase', data))
this.wsManager.on('updateDatabase', (socket, data) => this.db(socket, 'updateDatabase', data))
this.wsManager.on('deleteDatabase', (socket, data) => this.db(socket, 'deleteDatabase', data))
this.wsManager.on('createCollection', (socket, data) => this.db(socket, 'createCollection', data))
this.wsManager.on('readCollection', (socket, data) => this.db(socket, 'readCollection', data))
this.wsManager.on('updateCollection', (socket, data) => this.db(socket, 'updateCollection', data))
this.wsManager.on('deleteCollection', (socket, data) => this.db(socket, 'deleteCollection', data))
this.wsManager.on('createDocument', (socket, data) => this.db(socket, 'createDocument', data))
this.wsManager.on('readDocument', (socket, data) => this.db(socket, 'readDocument', data))
this.wsManager.on('updateDocument', (socket, data) => this.db(socket, 'updateDocument', data))
this.wsManager.on('deleteDocument', (socket, data) => this.db(socket, 'deleteDocument', data))
}
}
init() {
new crud(this.wsManager, this.dbClient);
new backup(this.wsManager, this.dbClient);
new database(this.wsManager, this.dbClient);
}
async databaseStats(data) {
data = await this.db('', 'databaseStats', data)
return data
}
async createCollection(data) {
data = await this.db('', 'createCollection', data)
return data
}
async readCollection(data) {
data = await this.db('', 'readCollection', data)
return data
}
async readCollections(data) {
data = await this.db('', 'readCollections', data)
return data
}
async updateCollection(data) {
data = await this.db('', 'updateCollection', data)
return data
}
async deleteCollection(data) {
data = await this.db('', 'deleteCollection', data)
return data
}
async createDocument(data) {
data = await this.db('', 'createDocument', data)
return data
}
async readDocument(data) {
data = await this.db('', 'readDocument', data)
return data
}
async updateDocument(data) {
data = await this.db('', 'updateDocument', data)
return data
}
async deleteDocument(data) {
data = await this.db('', 'deleteDocument', data)
return data
}
async db(socket, action, data) {
return new Promise(async (resolve) => {
try {
data['timeStamp'] = new Date().toISOString()
if (action == 'updateDocument' && data.upsert != false)
data.upsert = true
// ToDo: support stats from multiple dbs
if (data.collection || action == 'databaseStats') {
if (!data.db)
data['db'] = ['indexeddb', 'mongodb']
if (!data.database)
data['database'] = data.organization_id || process.env.organization_id
if (!data.organization_id)
data['organization_id'] = process.env.organization_id
}
if (!data.db || !data.db.length)
data.db = this.dbs
let dbsLength = data.db.length
for (let i = 0; i < data.db.length; i++) {
dbsLength -= 1
if (this.dbs.includes(data.db[i])) {
this[data.db[i]][action](data).then((data) => {
//ToDo: sorting should take place here in order to return sorted values from multiple dbs
if (!dbsLength) {
if (socket) {
this.wsManager.broadcast(socket, action, data);
process.emit('changed-document', data)
resolve()
} else {
resolve(data)
}
}
})
} else {
if (!dbsLength) {
if (socket) {
this.wsManager.broadcast(socket, action, data);
process.emit('changed-document', data)
resolve()
} else {
resolve(data)
}
}
}
}
} catch(error) {
if (socket) {
errorHandler(data, error)
this.wsManager.send(socket, action, data);
resolve()
} else {
resolve(data)
}
}
});
}
ObjectId = (rnd = r16 => Math.floor(r16).toString(16)) =>
rnd(Date.now()/1000) + ' '.repeat(16).replace(/./g, () => rnd(Math.random()*16))
errorHandler(data, error, database, collection){
if (typeof error == 'object')
error['db'] = 'mongodb'
else
error = {location: 'crudServer', message: error}
if (database)
error['database'] = database
if(data.error)
data.error.push(error)
else
data.error = [error]
}
}
module.exports = CoCreateCrudServer;
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc