|
1 |
| -function NoSQLCRUDAdapter(dbConnectFunction) { |
| 1 | +function NoSQLCRUDAdapter(dbConnectFunction, getId) { |
2 | 2 | function getObjects(collectionName, filter, callback) {
|
3 | 3 | filter = filter || [];
|
4 | 4 | let query = {};
|
5 | 5 | filter.forEach(fi => query[fi.name] = fi.value);
|
6 |
| - dbConnectFunction((dbo, finalizeCallback) => |
7 |
| - dbo.collection(collectionName).find(query).toArray((error, results) => { |
8 |
| - finalizeCallback(); |
9 |
| - if (error) { |
10 |
| - throw error; |
11 |
| - } |
12 |
| - callback(results); |
13 |
| - }) |
| 6 | + dbConnectFunction((db, finalizeCallback) => { |
| 7 | + db.collection(collectionName).find(query).toArray() |
| 8 | + .then((results) => { |
| 9 | + callback(results); |
| 10 | + finalizeCallback(results); |
| 11 | + }) |
| 12 | + .catch(() => { |
| 13 | + console.error(JSON.stringify(arguments)); |
| 14 | + }); |
| 15 | + } |
14 | 16 | );
|
15 | 17 | }
|
16 | 18 |
|
17 |
| - function deleteObject(tableName, idValue, callback) { |
18 |
| - const command = "DELETE FROM " + tableName + " WHERE id='" + idValue + "'"; |
19 |
| - dbConnectFunction(command, (error, results) => { |
20 |
| - if (error) { |
21 |
| - throw error; |
| 19 | + function deleteObject(collectionName, idValue, callback) { |
| 20 | + dbConnectFunction((db, finalizeCallback) => { |
| 21 | + db.collection(collectionName).deleteMany({ id: idValue }) |
| 22 | + .then((results) => { |
| 23 | + callback(results); |
| 24 | + finalizeCallback(results); |
| 25 | + }) |
| 26 | + .catch(() => { |
| 27 | + console.error(JSON.stringify(arguments)); |
| 28 | + }); |
22 | 29 | }
|
23 |
| - callback(results); |
24 |
| - }); |
| 30 | + ); |
25 | 31 | }
|
26 | 32 |
|
27 |
| - function createObject(tableName, object, callback) { |
28 |
| - const valueNames = []; |
29 |
| - const valueIndexes = []; |
30 |
| - const values = []; |
31 |
| - Object.keys(object).forEach((key, index) => { |
32 |
| - if(object[key] !== undefined) { |
33 |
| - valueNames.push(key); |
34 |
| - valueIndexes.push("$" + (index + 1)); |
35 |
| - values.push(object[key]); |
36 |
| - } |
37 |
| - }); |
38 |
| - const command = "INSERT INTO " + tableName + " (" + valueNames.join(", ") + ") VALUES (" + valueIndexes.join(", ") + ") RETURNING id"; |
39 |
| - dbConnectFunction(command, values, (error, results) => { |
40 |
| - if (error) { |
41 |
| - throw error; |
| 33 | + function createObject(collectionName, object, callback) { |
| 34 | + object.id = object.id || getId(); |
| 35 | + dbConnectFunction((db, finalizeCallback) => { |
| 36 | + db.collection(collectionName).insertOne(object) |
| 37 | + .then((results) => { |
| 38 | + callback(object.id); |
| 39 | + finalizeCallback(results); |
| 40 | + }) |
| 41 | + .catch(() => { |
| 42 | + console.error(JSON.stringify(arguments)); |
| 43 | + }); |
42 | 44 | }
|
43 |
| - // console.log(JSON.stringify(results)); |
44 |
| - callback(results.rows[0].id); |
45 |
| - }); |
| 45 | + ); |
46 | 46 | }
|
47 | 47 |
|
48 |
| - function updateObject(tableName, object, callback) { |
49 |
| - const valueNames = []; |
50 |
| - const values = []; |
51 |
| - Object.keys(object).forEach((key, index) => { |
52 |
| - if(object[key] !== undefined) { |
53 |
| - valueNames.push(key + " = $" + (index + 1)); |
54 |
| - values.push(object[key]); |
55 |
| - } |
56 |
| - }); |
57 |
| - const command = "UPDATE " + tableName + " SET " + valueNames.join(", ") + " WHERE id = '" + object.id + "'"; |
58 |
| - dbConnectFunction(command, values, (error, results) => { |
59 |
| - if (error) { |
60 |
| - throw error; |
| 48 | + function updateObject(collectionName, object, callback) { |
| 49 | + dbConnectFunction((db, finalizeCallback) => { |
| 50 | + db.collection(collectionName).updateOne({ id: object.id }, { $set: object }) |
| 51 | + .then((results) => { |
| 52 | + callback(results); |
| 53 | + finalizeCallback(results); |
| 54 | + }) |
| 55 | + .catch(() => { |
| 56 | + console.error(JSON.stringify(arguments)); |
| 57 | + }); |
61 | 58 | }
|
62 |
| - callback(object); |
63 |
| - }); |
| 59 | + ); |
64 | 60 | }
|
65 | 61 |
|
66 | 62 | return {
|
|
0 commit comments