multi-db-orm 3.0.12 → 3.1.0
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.
- package/.vscode/launch.json +29 -29
- package/.vscode/settings.json +10 -10
- package/Dockerfile +17 -17
- package/backup.js +107 -107
- package/databases.js +19 -19
- package/engines/bigquerydb.d.ts +36 -36
- package/engines/bigquerydb.js +236 -236
- package/engines/firestoredb.d.ts +39 -39
- package/engines/firestoredb.js +227 -227
- package/engines/hanadb.d.ts +24 -24
- package/engines/hanadb.js +244 -244
- package/engines/index.d.ts +8 -8
- package/engines/metrics.d.ts +8 -8
- package/engines/metrics.js +77 -77
- package/engines/mongodb.d.ts +18 -18
- package/engines/mongodb.js +148 -148
- package/engines/multidb.d.ts +41 -41
- package/engines/multidb.js +67 -67
- package/engines/mysqldb.d.ts +25 -25
- package/engines/oracledb.d.ts +24 -24
- package/engines/oracledb.js +250 -250
- package/engines/sqlitedb.d.ts +11 -11
- package/engines/sqlitedb.js +166 -166
- package/index.js +23 -23
- package/migrate.sh +11 -11
- package/package.json +1 -1
- package/postinstall.js +8 -8
- package/restore.js +102 -102
- package/sync.d.ts +5 -5
- package/sync.js +48 -48
- package/test/models.js +23 -23
- package/test/test.js +434 -434
package/.vscode/launch.json
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
{
|
|
2
|
-
// Use IntelliSense to learn about possible attributes.
|
|
3
|
-
// Hover to view descriptions of existing attributes.
|
|
4
|
-
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
-
"version": "0.2.0",
|
|
6
|
-
"configurations": [
|
|
7
|
-
{
|
|
8
|
-
"name": "Launch via NPM",
|
|
9
|
-
"request": "launch",
|
|
10
|
-
"runtimeArgs": [
|
|
11
|
-
"run-script",
|
|
12
|
-
"test"
|
|
13
|
-
],
|
|
14
|
-
"runtimeExecutable": "npm",
|
|
15
|
-
"skipFiles": [
|
|
16
|
-
"<node_internals>/**"
|
|
17
|
-
],
|
|
18
|
-
"type": "node"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"type": "node",
|
|
22
|
-
"request": "launch",
|
|
23
|
-
"name": "Launch Program",
|
|
24
|
-
"skipFiles": [
|
|
25
|
-
"<node_internals>/**"
|
|
26
|
-
],
|
|
27
|
-
"program": "${workspaceFolder}/test/test.js"
|
|
28
|
-
}
|
|
29
|
-
]
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"name": "Launch via NPM",
|
|
9
|
+
"request": "launch",
|
|
10
|
+
"runtimeArgs": [
|
|
11
|
+
"run-script",
|
|
12
|
+
"test"
|
|
13
|
+
],
|
|
14
|
+
"runtimeExecutable": "npm",
|
|
15
|
+
"skipFiles": [
|
|
16
|
+
"<node_internals>/**"
|
|
17
|
+
],
|
|
18
|
+
"type": "node"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "node",
|
|
22
|
+
"request": "launch",
|
|
23
|
+
"name": "Launch Program",
|
|
24
|
+
"skipFiles": [
|
|
25
|
+
"<node_internals>/**"
|
|
26
|
+
],
|
|
27
|
+
"program": "${workspaceFolder}/test/test.js"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
30
|
}
|
package/.vscode/settings.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sqltools.connections": [
|
|
3
|
-
{
|
|
4
|
-
"previewLimit": 50,
|
|
5
|
-
"driver": "SQLite",
|
|
6
|
-
"name": "test",
|
|
7
|
-
"database": "${workspaceFolder:multi-db-safe}/test.db"
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"sqltools.useNodeRuntime": true
|
|
1
|
+
{
|
|
2
|
+
"sqltools.connections": [
|
|
3
|
+
{
|
|
4
|
+
"previewLimit": 50,
|
|
5
|
+
"driver": "SQLite",
|
|
6
|
+
"name": "test",
|
|
7
|
+
"database": "${workspaceFolder:multi-db-safe}/test.db"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"sqltools.useNodeRuntime": true
|
|
11
11
|
}
|
package/Dockerfile
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# The base image
|
|
2
|
-
FROM node:10
|
|
3
|
-
|
|
4
|
-
# The working directory inside the image
|
|
5
|
-
WORKDIR /multi-db-safe
|
|
6
|
-
|
|
7
|
-
# Copy everything from folder with the docker file to /app
|
|
8
|
-
COPY . .
|
|
9
|
-
|
|
10
|
-
# Run a commandline when docker build
|
|
11
|
-
RUN npm install
|
|
12
|
-
|
|
13
|
-
# Upon start of image this command will run , This is taken as a startup command and can be overriden from cmd line when 'docker run'
|
|
14
|
-
CMD ["echo","Starting Migration..."]
|
|
15
|
-
|
|
16
|
-
# Upon start of image this command will run , This is taken as a stable command and cannot be overriden from cmd line when 'docker run'
|
|
17
|
-
ENTRYPOINT ["/multi-db-safe/migrate.sh"]
|
|
1
|
+
# The base image
|
|
2
|
+
FROM node:10
|
|
3
|
+
|
|
4
|
+
# The working directory inside the image
|
|
5
|
+
WORKDIR /multi-db-safe
|
|
6
|
+
|
|
7
|
+
# Copy everything from folder with the docker file to /app
|
|
8
|
+
COPY . .
|
|
9
|
+
|
|
10
|
+
# Run a commandline when docker build
|
|
11
|
+
RUN npm install
|
|
12
|
+
|
|
13
|
+
# Upon start of image this command will run , This is taken as a startup command and can be overriden from cmd line when 'docker run'
|
|
14
|
+
CMD ["echo","Starting Migration..."]
|
|
15
|
+
|
|
16
|
+
# Upon start of image this command will run , This is taken as a stable command and cannot be overriden from cmd line when 'docker run'
|
|
17
|
+
ENTRYPOINT ["/multi-db-safe/migrate.sh"]
|
package/backup.js
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
var fs = require('fs');
|
|
2
|
-
const { stringify } = require('querystring');
|
|
3
|
-
async function log(arg) {
|
|
4
|
-
update(arg)
|
|
5
|
-
}
|
|
6
|
-
var maxC = 0;
|
|
7
|
-
var curC = 1;
|
|
8
|
-
async function processCollection(n) {
|
|
9
|
-
|
|
10
|
-
var coll = db.collection(n.name)
|
|
11
|
-
var count = await coll.countDocuments()
|
|
12
|
-
log(n.name + " = " + count);
|
|
13
|
-
await coll.find()
|
|
14
|
-
.toArray((err, results) => {
|
|
15
|
-
if (err) throw err;
|
|
16
|
-
|
|
17
|
-
output[n.name] = results;
|
|
18
|
-
log("Dumped " + n.name + " (" + curC + "/" + maxC + ")");
|
|
19
|
-
if (maxC > curC) {
|
|
20
|
-
curC++;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
log("\n\n All Dumps completed !!");
|
|
24
|
-
log("Saving to file.... ", file)
|
|
25
|
-
write();
|
|
26
|
-
}
|
|
27
|
-
})
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
async function write(skipWriteToFile) {
|
|
31
|
-
var blob=JSON.stringify(output);
|
|
32
|
-
if (skipWriteToFile !== true) {
|
|
33
|
-
|
|
34
|
-
if(!fs.existsSync('./dumps'))
|
|
35
|
-
fs.mkdirSync('./dumps')
|
|
36
|
-
fs.writeFileSync(file, blob);
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
finish("Done !", blob);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function getDateString() {
|
|
43
|
-
var d = new Date();
|
|
44
|
-
|
|
45
|
-
var datestring = d.getFullYear() + "" + (d.getMonth() + 1) + "" + d.getDate() + "_" +
|
|
46
|
-
d.getHours() + "" + d.getMinutes();
|
|
47
|
-
|
|
48
|
-
return datestring;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
var output = {};
|
|
52
|
-
var file;
|
|
53
|
-
var db;
|
|
54
|
-
async function dump() {
|
|
55
|
-
file = "dumps/dump_" + getDateString() + ".json";
|
|
56
|
-
if(OVERRIDE_FILE){
|
|
57
|
-
file=OVERRIDE_FILE;
|
|
58
|
-
}
|
|
59
|
-
log("Dumps Saved to " + file);
|
|
60
|
-
db.listCollections().toArray(function (err, names) {
|
|
61
|
-
|
|
62
|
-
maxC = names.length;
|
|
63
|
-
names.forEach(processCollection)
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
var update;
|
|
69
|
-
var finish;
|
|
70
|
-
|
|
71
|
-
var backup=function (dbc, upd, fin) {
|
|
72
|
-
var module = {};
|
|
73
|
-
|
|
74
|
-
if (upd == undefined || dbc == undefined) {
|
|
75
|
-
fin("No DB Connection");
|
|
76
|
-
return
|
|
77
|
-
}
|
|
78
|
-
db = dbc;
|
|
79
|
-
update = upd;
|
|
80
|
-
finish = fin;
|
|
81
|
-
module.dump = dump
|
|
82
|
-
return module;
|
|
83
|
-
};
|
|
84
|
-
module.exports = backup
|
|
85
|
-
|
|
86
|
-
var DBURL = process.argv[2]
|
|
87
|
-
var OVERRIDE_FILE = process.argv[3]
|
|
88
|
-
if (DBURL) {
|
|
89
|
-
|
|
90
|
-
const mongoose = require('mongoose');
|
|
91
|
-
mongoose.Promise = global.Promise;
|
|
92
|
-
mongoose.connect(DBURL, {
|
|
93
|
-
useUnifiedTopology: true,
|
|
94
|
-
useNewUrlParser: true,
|
|
95
|
-
}).then(() => {
|
|
96
|
-
console.log("Successfully connected to the database");
|
|
97
|
-
backup(mongoose.connection.db,()=>{},(msg,blob)=>{
|
|
98
|
-
console.log("Backup Complete : Size "+blob.length,' Bytes')
|
|
99
|
-
process.exit();
|
|
100
|
-
}).dump()
|
|
101
|
-
}) .catch(err => {
|
|
102
|
-
console.log('Could not connect to the database. Exiting now...', err);
|
|
103
|
-
process.exit();
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
1
|
+
var fs = require('fs');
|
|
2
|
+
const { stringify } = require('querystring');
|
|
3
|
+
async function log(arg) {
|
|
4
|
+
update(arg)
|
|
5
|
+
}
|
|
6
|
+
var maxC = 0;
|
|
7
|
+
var curC = 1;
|
|
8
|
+
async function processCollection(n) {
|
|
9
|
+
|
|
10
|
+
var coll = db.collection(n.name)
|
|
11
|
+
var count = await coll.countDocuments()
|
|
12
|
+
log(n.name + " = " + count);
|
|
13
|
+
await coll.find()
|
|
14
|
+
.toArray((err, results) => {
|
|
15
|
+
if (err) throw err;
|
|
16
|
+
|
|
17
|
+
output[n.name] = results;
|
|
18
|
+
log("Dumped " + n.name + " (" + curC + "/" + maxC + ")");
|
|
19
|
+
if (maxC > curC) {
|
|
20
|
+
curC++;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
log("\n\n All Dumps completed !!");
|
|
24
|
+
log("Saving to file.... ", file)
|
|
25
|
+
write();
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
async function write(skipWriteToFile) {
|
|
31
|
+
var blob=JSON.stringify(output);
|
|
32
|
+
if (skipWriteToFile !== true) {
|
|
33
|
+
|
|
34
|
+
if(!fs.existsSync('./dumps'))
|
|
35
|
+
fs.mkdirSync('./dumps')
|
|
36
|
+
fs.writeFileSync(file, blob);
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
finish("Done !", blob);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function getDateString() {
|
|
43
|
+
var d = new Date();
|
|
44
|
+
|
|
45
|
+
var datestring = d.getFullYear() + "" + (d.getMonth() + 1) + "" + d.getDate() + "_" +
|
|
46
|
+
d.getHours() + "" + d.getMinutes();
|
|
47
|
+
|
|
48
|
+
return datestring;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var output = {};
|
|
52
|
+
var file;
|
|
53
|
+
var db;
|
|
54
|
+
async function dump() {
|
|
55
|
+
file = "dumps/dump_" + getDateString() + ".json";
|
|
56
|
+
if(OVERRIDE_FILE){
|
|
57
|
+
file=OVERRIDE_FILE;
|
|
58
|
+
}
|
|
59
|
+
log("Dumps Saved to " + file);
|
|
60
|
+
db.listCollections().toArray(function (err, names) {
|
|
61
|
+
|
|
62
|
+
maxC = names.length;
|
|
63
|
+
names.forEach(processCollection)
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
var update;
|
|
69
|
+
var finish;
|
|
70
|
+
|
|
71
|
+
var backup=function (dbc, upd, fin) {
|
|
72
|
+
var module = {};
|
|
73
|
+
|
|
74
|
+
if (upd == undefined || dbc == undefined) {
|
|
75
|
+
fin("No DB Connection");
|
|
76
|
+
return
|
|
77
|
+
}
|
|
78
|
+
db = dbc;
|
|
79
|
+
update = upd;
|
|
80
|
+
finish = fin;
|
|
81
|
+
module.dump = dump
|
|
82
|
+
return module;
|
|
83
|
+
};
|
|
84
|
+
module.exports = backup
|
|
85
|
+
|
|
86
|
+
var DBURL = process.argv[2]
|
|
87
|
+
var OVERRIDE_FILE = process.argv[3]
|
|
88
|
+
if (DBURL) {
|
|
89
|
+
|
|
90
|
+
const mongoose = require('mongoose');
|
|
91
|
+
mongoose.Promise = global.Promise;
|
|
92
|
+
mongoose.connect(DBURL, {
|
|
93
|
+
useUnifiedTopology: true,
|
|
94
|
+
useNewUrlParser: true,
|
|
95
|
+
}).then(() => {
|
|
96
|
+
console.log("Successfully connected to the database");
|
|
97
|
+
backup(mongoose.connection.db,()=>{},(msg,blob)=>{
|
|
98
|
+
console.log("Backup Complete : Size "+blob.length,' Bytes')
|
|
99
|
+
process.exit();
|
|
100
|
+
}).dump()
|
|
101
|
+
}) .catch(err => {
|
|
102
|
+
console.log('Could not connect to the database. Exiting now...', err);
|
|
103
|
+
process.exit();
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
108
|
}
|
package/databases.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
const { MultiDbORM } = require("./engines/multidb");
|
|
2
|
-
const { FireStoreDB } = require("./engines/firestoredb");
|
|
3
|
-
const { MongoDB } = require("./engines/mongodb");
|
|
4
|
-
const { SQLiteDB } = require("./engines/sqlitedb");
|
|
5
|
-
const { OracleDB } = require("./engines/oracledb");
|
|
6
|
-
const { MySQLDB } = require("./engines/mysqldb");
|
|
7
|
-
const { HanaDB } = require("./engines/hanadb");
|
|
8
|
-
const { BigQueryDB } = require("./engines/bigquerydb");
|
|
9
|
-
|
|
10
|
-
module.exports = {
|
|
11
|
-
MultiDbORM,
|
|
12
|
-
FireStoreDB,
|
|
13
|
-
MongoDB,
|
|
14
|
-
SQLiteDB,
|
|
15
|
-
OracleDB,
|
|
16
|
-
MySQLDB,
|
|
17
|
-
HanaDB,
|
|
18
|
-
BigQueryDB,
|
|
19
|
-
};
|
|
1
|
+
const { MultiDbORM } = require("./engines/multidb");
|
|
2
|
+
const { FireStoreDB } = require("./engines/firestoredb");
|
|
3
|
+
const { MongoDB } = require("./engines/mongodb");
|
|
4
|
+
const { SQLiteDB } = require("./engines/sqlitedb");
|
|
5
|
+
const { OracleDB } = require("./engines/oracledb");
|
|
6
|
+
const { MySQLDB } = require("./engines/mysqldb");
|
|
7
|
+
const { HanaDB } = require("./engines/hanadb");
|
|
8
|
+
const { BigQueryDB } = require("./engines/bigquerydb");
|
|
9
|
+
|
|
10
|
+
module.exports = {
|
|
11
|
+
MultiDbORM,
|
|
12
|
+
FireStoreDB,
|
|
13
|
+
MongoDB,
|
|
14
|
+
SQLiteDB,
|
|
15
|
+
OracleDB,
|
|
16
|
+
MySQLDB,
|
|
17
|
+
HanaDB,
|
|
18
|
+
BigQueryDB,
|
|
19
|
+
};
|
package/engines/bigquerydb.d.ts
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { MultiDbORM } from './multidb';
|
|
2
|
-
|
|
3
|
-
interface BqServiceAccount {
|
|
4
|
-
type: string;
|
|
5
|
-
project_id: string;
|
|
6
|
-
private_key_id: string;
|
|
7
|
-
private_key: string;
|
|
8
|
-
client_email: string;
|
|
9
|
-
client_id: string;
|
|
10
|
-
auth_uri: string;
|
|
11
|
-
token_uri: string;
|
|
12
|
-
auth_provider_x509_cert_url: string;
|
|
13
|
-
client_x509_cert_url: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export declare class BigQueryDB extends MultiDbORM {
|
|
17
|
-
bq: any;
|
|
18
|
-
|
|
19
|
-
serviceAccount: BqServiceAccount;
|
|
20
|
-
|
|
21
|
-
constructor(serviceAccountObj: BqServiceAccount, datasetname?: string);
|
|
22
|
-
|
|
23
|
-
run(query: string): Promise<any>;
|
|
24
|
-
|
|
25
|
-
get(modelname: string, filter: any, options?: any): Promise<any>;
|
|
26
|
-
|
|
27
|
-
getOne(modelname: string, filter: any, id?: string, options?: any): Promise<any>;
|
|
28
|
-
|
|
29
|
-
create(modelname: string, sampleObject: any): Promise<any>;
|
|
30
|
-
|
|
31
|
-
insert(modelname: string, object: any, id?: string): Promise<any>;
|
|
32
|
-
|
|
33
|
-
update(modelname: string, filter: any, object: any, id?: string): Promise<any>;
|
|
34
|
-
|
|
35
|
-
delete(modelname: string, filter: any, id?: string): Promise<any>;
|
|
36
|
-
}
|
|
1
|
+
import { MultiDbORM } from './multidb';
|
|
2
|
+
|
|
3
|
+
interface BqServiceAccount {
|
|
4
|
+
type: string;
|
|
5
|
+
project_id: string;
|
|
6
|
+
private_key_id: string;
|
|
7
|
+
private_key: string;
|
|
8
|
+
client_email: string;
|
|
9
|
+
client_id: string;
|
|
10
|
+
auth_uri: string;
|
|
11
|
+
token_uri: string;
|
|
12
|
+
auth_provider_x509_cert_url: string;
|
|
13
|
+
client_x509_cert_url: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export declare class BigQueryDB extends MultiDbORM {
|
|
17
|
+
bq: any;
|
|
18
|
+
|
|
19
|
+
serviceAccount: BqServiceAccount;
|
|
20
|
+
|
|
21
|
+
constructor(serviceAccountObj: BqServiceAccount, datasetname?: string);
|
|
22
|
+
|
|
23
|
+
run(query: string): Promise<any>;
|
|
24
|
+
|
|
25
|
+
get(modelname: string, filter: any, options?: any): Promise<any>;
|
|
26
|
+
|
|
27
|
+
getOne(modelname: string, filter: any, id?: string, options?: any): Promise<any>;
|
|
28
|
+
|
|
29
|
+
create(modelname: string, sampleObject: any): Promise<any>;
|
|
30
|
+
|
|
31
|
+
insert(modelname: string, object: any, id?: string): Promise<any>;
|
|
32
|
+
|
|
33
|
+
update(modelname: string, filter: any, object: any, id?: string): Promise<any>;
|
|
34
|
+
|
|
35
|
+
delete(modelname: string, filter: any, id?: string): Promise<any>;
|
|
36
|
+
}
|