| 
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