multi-db-orm 2.1.26 → 3.0.1

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.
@@ -1,174 +1,166 @@
1
1
  const { MultiDbORM } = require("./multidb");
2
- var fs = require('fs')
2
+ var fs = require("fs");
3
3
 
4
4
  class SQLiteDB extends MultiDbORM {
5
-
6
- sqlite3
7
- dataMap = {
8
- "string": "TEXT",
9
- "number": "REAL",
10
- "boolean": "BOOLEAN"
11
- }
12
- constructor(filepath) {
13
- super()
14
- var sqlite3 = require('sqlite3')
15
- this.sqlite3 = sqlite3
16
- if (filepath == undefined)
17
- filepath = ':memory:'
18
- else {
19
- var currentPath = process.cwd();
20
- if (!fs.existsSync(filepath)) {
21
- filepath = currentPath + '/' + filepath
22
- }
23
- }
24
- this.db = new sqlite3.Database(filepath);
25
- console.log("SQLite3 Initialized");
26
- this.dbType = 'sqlite3'
27
- this.reqMade = 0
5
+ sqlite3;
6
+ dataMap = {
7
+ string: "TEXT",
8
+ number: "REAL",
9
+ boolean: "BOOLEAN",
10
+ };
11
+ constructor(filepath) {
12
+ super();
13
+ var sqlite3 = require("sqlite3");
14
+ this.sqlite3 = sqlite3;
15
+ if (filepath == undefined) filepath = ":memory:";
16
+ else {
17
+ var currentPath = process.cwd();
18
+ if (!fs.existsSync(filepath)) {
19
+ filepath = currentPath + "/" + filepath;
20
+ }
28
21
  }
29
-
30
- async run(query) {
31
- var db = this.db;
32
- var that = this
33
- this.reqMade++
34
- return new Promise(function (resolve, reject) {
35
- db.all(query, function (err, resp) {
36
- if (err)
37
- reject(err)
38
- else
39
- resolve(resp);
40
- if (that.loglevel > 3)
41
- console.log("Query ", query, ' -> ', resp)
42
- });
43
- })
44
-
45
-
22
+ this.db = new sqlite3.Database(filepath);
23
+ console.log("SQLite3 Initialized");
24
+ this.dbType = "sqlite3";
25
+ this.reqMade = 0;
26
+ }
27
+
28
+ async run(query) {
29
+ var db = this.db;
30
+ var that = this;
31
+ this.reqMade++;
32
+ return new Promise(function (resolve, reject) {
33
+ db.all(query, function (err, resp) {
34
+ if (err) reject(err);
35
+ else resolve(resp);
36
+ if (that.loglevel > 3) console.log("Query ", query, " -> ", resp);
37
+ });
38
+ });
39
+ }
40
+
41
+ async get(modelname, filter, options) {
42
+ this.metrics.get(modelname, filter, options);
43
+ var where = "";
44
+ for (var key in filter) {
45
+ where = where + `${key} = '${filter[key]}' AND `;
46
46
  }
47
-
48
- async get(modelname, filter, options) {
49
- this.metrics.get(modelname, filter, options)
50
- var where = ''
51
- for (var key in filter) {
52
- where = where + `${key} = '${filter[key]}' AND `
47
+ where = where + " 1 ";
48
+ var sort = "";
49
+ if (options) {
50
+ if (options.apply) {
51
+ if (options.apply.ineq) {
52
+ where =
53
+ where +
54
+ ` AND '${options.apply.field}' ${options.apply.ineq.op} '${options.apply.ineq.value}'`;
53
55
  }
54
- where = where + " 1 ";
55
- var sort = "";
56
- if (options) {
57
- if (options.apply) {
58
- if (options.apply.ineq) {
59
- where = where + ` AND '${options.apply.field}' ${options.apply.ineq.op} '${options.apply.ineq.value}'`;
60
- }
61
- if (options.apply.sort) {
62
- sort = `ORDER BY ${options.apply.field} ${options.apply.sort}`
63
- }
64
- }
65
- else if (options.sort) {
66
- sort = `ORDER BY`
67
- for (let i = 0; i < options.sort.length; i++) {
68
- sort = sort + ` ${options.sort[i].field} ${options.sort[i].order}`;
69
- if (i < options.sort.length - 1) {
70
- sort = sort + ' , ';
71
- }
72
-
73
- }
74
- }
56
+ if (options.apply.sort) {
57
+ sort = `ORDER BY ${options.apply.field} ${options.apply.sort}`;
75
58
  }
76
- var query = `SELECT * FROM ${modelname} WHERE ${where} ${sort} ;`
77
- return await this.run(query)
78
- }
79
-
80
- async getOne(modelname, filter) {
81
- this.metrics.getOne(modelname, filter)
82
- var where = ''
83
- for (var key in filter) {
84
- where = where + `${key} = '${filter[key]}' AND `
59
+ } else if (options.sort) {
60
+ sort = `ORDER BY`;
61
+ for (let i = 0; i < options.sort.length; i++) {
62
+ sort = sort + ` ${options.sort[i].field} ${options.sort[i].order}`;
63
+ if (i < options.sort.length - 1) {
64
+ sort = sort + " , ";
65
+ }
85
66
  }
86
- where = where + " 1 ";
87
- var query = `SELECT * FROM ${modelname} WHERE ${where} LIMIT 1;`
88
- var row = await this.run(query)
89
- return row[0];
67
+ }
90
68
  }
91
-
92
- async create(modelname, sampleObject) {
93
- this.sync.create(modelname, sampleObject)
94
- this.metrics.create(modelname, sampleObject)
95
-
96
- var cols = ''
97
- for (var key in sampleObject) {
98
- var type = this.dataMap[typeof (sampleObject[key])] || 'TEXT'
99
- cols = cols + `${key} ${type},`
100
- }
101
- cols = cols.substring(0, cols.length - 1)
102
- var query = `CREATE TABLE IF NOT EXISTS ${modelname} (${cols});`
103
- try {
104
- return await this.run(query)
105
- } catch (err) {
106
- console.log(err)
107
- return undefined;
108
- }
69
+ var query = `SELECT * FROM ${modelname} WHERE ${where} ${sort} ;`;
70
+ return (await this.run(query)) || [];
71
+ }
72
+
73
+ async getOne(modelname, filter) {
74
+ this.metrics.getOne(modelname, filter);
75
+ var where = "";
76
+ for (var key in filter) {
77
+ where = where + `${key} = '${filter[key]}' AND `;
109
78
  }
110
-
111
- async insert(modelname, object) {
112
- this.sync.insert(modelname, object)
113
- this.metrics.insert(modelname, object)
114
- var cols = ''
115
- var vals = ''
116
- for (var key in object) {
117
- cols = cols + `${key},`
118
- vals = vals + `'${object[key]}',`
119
- }
120
- cols = cols.substring(0, cols.length - 1)
121
- vals = vals.substring(0, vals.length - 1)
122
-
123
- var query = `INSERT INTO ${modelname} (${cols}) VALUES(${vals});`
124
-
125
- try {
126
- return await this.run(query)
127
- } catch (err) {
128
- if (err.message && err.message.indexOf('SQLITE_ERROR: no such table: ') > -1) {
129
- await this.create(modelname, object);
130
- return await this.run(query)
131
- }
132
- else
133
- throw err;
134
- }
79
+ where = where + " 1 ";
80
+ var query = `SELECT * FROM ${modelname} WHERE ${where} LIMIT 1;`;
81
+ var row = await this.run(query);
82
+ return row[0];
83
+ }
84
+
85
+ async create(modelname, sampleObject) {
86
+ this.sync.create(modelname, sampleObject);
87
+ this.metrics.create(modelname, sampleObject);
88
+
89
+ var cols = "";
90
+ for (var key in sampleObject) {
91
+ var type = this.dataMap[typeof sampleObject[key]] || "TEXT";
92
+ cols = cols + `${key} ${type},`;
135
93
  }
94
+ cols = cols.substring(0, cols.length - 1);
95
+ var query = `CREATE TABLE IF NOT EXISTS ${modelname} (${cols});`;
96
+ try {
97
+ return await this.run(query);
98
+ } catch (err) {
99
+ console.log(err);
100
+ return undefined;
101
+ }
102
+ }
103
+
104
+ async insert(modelname, object) {
105
+ this.sync.insert(modelname, object);
106
+ this.metrics.insert(modelname, object);
107
+ var cols = "";
108
+ var vals = "";
109
+ for (var key in object) {
110
+ cols = cols + `${key},`;
111
+ vals = vals + `'${object[key]}',`;
112
+ }
113
+ cols = cols.substring(0, cols.length - 1);
114
+ vals = vals.substring(0, vals.length - 1);
115
+
116
+ var query = `INSERT INTO ${modelname} (${cols}) VALUES(${vals});`;
117
+
118
+ try {
119
+ return await this.run(query);
120
+ } catch (err) {
121
+ if (
122
+ err.message &&
123
+ err.message.indexOf("SQLITE_ERROR: no such table: ") > -1
124
+ ) {
125
+ await this.create(modelname, object);
126
+ return await this.run(query);
127
+ } else throw err;
128
+ }
129
+ }
136
130
 
137
- async update(modelname, filter, object) {
138
- this.sync.update(modelname, filter, object)
139
- this.metrics.update(modelname, filter, object)
131
+ async update(modelname, filter, object) {
132
+ this.sync.update(modelname, filter, object);
133
+ this.metrics.update(modelname, filter, object);
140
134
 
141
- var where = ''
142
- var vals = ''
143
- for (var key in filter) {
144
- where = where + `${key} = '${filter[key]}' AND `
145
- }
146
- for (var key in object) {
147
- vals = vals + ` ${key} = '${object[key]}',`
148
- }
149
- where = where + " 1 ";
150
- vals = vals.substring(0, vals.length - 1)
151
-
152
- var query = `UPDATE ${modelname} SET ${vals} WHERE ${where};`
153
- return await this.run(query)
135
+ var where = "";
136
+ var vals = "";
137
+ for (var key in filter) {
138
+ where = where + `${key} = '${filter[key]}' AND `;
154
139
  }
140
+ for (var key in object) {
141
+ vals = vals + ` ${key} = '${object[key]}',`;
142
+ }
143
+ where = where + " 1 ";
144
+ vals = vals.substring(0, vals.length - 1);
155
145
 
156
- async delete(modelname, filter) {
157
- this.sync.delete(modelname, filter)
158
- this.metrics.delete(modelname, filter)
146
+ var query = `UPDATE ${modelname} SET ${vals} WHERE ${where};`;
147
+ return await this.run(query);
148
+ }
159
149
 
160
- var where = ''
161
- for (var key in filter) {
162
- where = where + `${key} = '${filter[key]}' AND `
163
- }
164
- where = where + " 1 ";
165
- var query = `DELETE FROM ${modelname} WHERE ${where};`
166
- return await this.run(query)
150
+ async delete(modelname, filter) {
151
+ this.sync.delete(modelname, filter);
152
+ this.metrics.delete(modelname, filter);
153
+
154
+ var where = "";
155
+ for (var key in filter) {
156
+ where = where + `${key} = '${filter[key]}' AND `;
167
157
  }
158
+ where = where + " 1 ";
159
+ var query = `DELETE FROM ${modelname} WHERE ${where};`;
160
+ return await this.run(query);
161
+ }
168
162
  }
169
163
 
170
-
171
-
172
164
  module.exports = {
173
- SQLiteDB
174
- }
165
+ SQLiteDB,
166
+ };
package/index.js CHANGED
@@ -1,12 +1,21 @@
1
- const { MultiDBSafe, FireStoreDB, MongoDB, SQLiteDB, OracleDB, MySQLDB } = require("./databases");
1
+ const {
2
+ MultiDBSafe,
3
+ FireStoreDB,
4
+ MongoDB,
5
+ SQLiteDB,
6
+ OracleDB,
7
+ MySQLDB,
8
+ HanaDB,
9
+ } = require("./databases");
2
10
  const { Sync } = require("./sync");
3
11
 
4
12
  module.exports = {
5
- MultiDBSafe,
6
- FireStoreDB,
7
- MongoDB,
8
- SQLiteDB,
9
- OracleDB,
10
- MySQLDB,
11
- Sync
12
- }
13
+ MultiDBSafe,
14
+ FireStoreDB,
15
+ MongoDB,
16
+ SQLiteDB,
17
+ OracleDB,
18
+ MySQLDB,
19
+ HanaDB,
20
+ Sync,
21
+ };
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "multi-db-orm",
3
- "version": "2.1.26",
3
+ "version": "3.0.1",
4
4
  "description": "CRUD , Backup , Restore and Migration library for multiple databases",
5
5
  "main": "index.js",
6
6
  "dependencies": {
7
7
  "fs": "0.0.1-security"
8
8
  },
9
9
  "devDependencies": {
10
+ "@sap/hana-client": "^2.23.24",
10
11
  "firebase-admin": "^9.3.0",
11
12
  "mongodb": "^3.6.3",
12
13
  "mysql": "^2.18.1",
@@ -46,4 +47,4 @@
46
47
  "url": "https://github.com/shiveshnavin/multi-db-orm/issues"
47
48
  },
48
49
  "homepage": "https://github.com/shiveshnavin/multi-db-orm#readme"
49
- }
50
+ }