multi-db-orm 3.0.12 → 3.1.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.
- 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 +242 -227
- package/engines/hanadb.d.ts +24 -24
- package/engines/hanadb.js +259 -244
- package/engines/index.d.ts +8 -8
- package/engines/metrics.d.ts +8 -8
- package/engines/metrics.js +157 -77
- package/engines/mongodb.d.ts +18 -18
- package/engines/mongodb.js +155 -148
- package/engines/multidb.d.ts +41 -41
- package/engines/multidb.js +72 -67
- package/engines/mysqldb.d.ts +25 -25
- package/engines/mysqldb.js +25 -12
- package/engines/oracledb.d.ts +24 -24
- package/engines/oracledb.js +266 -250
- package/engines/sqlitedb.d.ts +11 -11
- package/engines/sqlitedb.js +179 -166
- package/index.js +23 -23
- package/migrate.sh +11 -11
- package/package.json +3 -3
- 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 +431 -434
package/engines/bigquerydb.js
CHANGED
|
@@ -1,236 +1,236 @@
|
|
|
1
|
-
const { MultiDbORM } = require("
|
|
2
|
-
const { Metrics } = require("
|
|
3
|
-
const { Sync } = require("
|
|
4
|
-
// const { MultiDbORM } = require('./multidb');
|
|
5
|
-
|
|
6
|
-
class BigQueryDB {
|
|
7
|
-
sync = new Sync();
|
|
8
|
-
metrics = new Metrics();
|
|
9
|
-
bq;
|
|
10
|
-
serviceAccount;
|
|
11
|
-
loglevel = 0;
|
|
12
|
-
constructor(serviceAccountObject, datasetname) {
|
|
13
|
-
// super();
|
|
14
|
-
this.serviceAccount = serviceAccountObject;
|
|
15
|
-
|
|
16
|
-
const { BigQuery } = require("@google-cloud/bigquery");
|
|
17
|
-
|
|
18
|
-
this.datasetname = datasetname;
|
|
19
|
-
this.bq = new BigQuery({
|
|
20
|
-
credentials: serviceAccountObject,
|
|
21
|
-
projectId: serviceAccountObject.project_id,
|
|
22
|
-
});
|
|
23
|
-
this.dbType = "bigquery";
|
|
24
|
-
this.reqMade = 0;
|
|
25
|
-
this.db = this.bq;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
sleep(timeout) {
|
|
29
|
-
return new Promise((resolve) => {
|
|
30
|
-
setTimeout(resolve, timeout);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async run(query) {
|
|
35
|
-
this.reqMade++;
|
|
36
|
-
try {
|
|
37
|
-
const [job] = await this.bq.createQueryJob({ query });
|
|
38
|
-
const [rows] = await job.getQueryResults();
|
|
39
|
-
if (this.loglevel > 3) {
|
|
40
|
-
console.log("Query ", query, " -> ", rows);
|
|
41
|
-
}
|
|
42
|
-
return rows;
|
|
43
|
-
} catch (err) {
|
|
44
|
-
if (this.loglevel > 0) {
|
|
45
|
-
console.error("BigQuery Error:", query, " -> ", err);
|
|
46
|
-
}
|
|
47
|
-
throw err;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
mapToKV(key, value) {
|
|
52
|
-
let kv;
|
|
53
|
-
switch (typeof value) {
|
|
54
|
-
case "string":
|
|
55
|
-
kv = `${key} = '${value}'`;
|
|
56
|
-
break;
|
|
57
|
-
case "number":
|
|
58
|
-
case "boolean":
|
|
59
|
-
kv = `${key} = ${value}`;
|
|
60
|
-
break;
|
|
61
|
-
case "object":
|
|
62
|
-
kv = `${key} = '${JSON.stringify(value)}'`;
|
|
63
|
-
break;
|
|
64
|
-
default:
|
|
65
|
-
kv = `${key} = '${value}'`;
|
|
66
|
-
}
|
|
67
|
-
return kv;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
constructWhereClause(filter) {
|
|
71
|
-
return (
|
|
72
|
-
Object.entries(filter)
|
|
73
|
-
.map(([key, value]) => this.mapToKV(key, value))
|
|
74
|
-
.join(" AND ") + " AND TRUE"
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
async get(modelname, filter, options) {
|
|
79
|
-
this.metrics.get(modelname, filter, options);
|
|
80
|
-
var where = this.constructWhereClause(filter);
|
|
81
|
-
var sort = "";
|
|
82
|
-
if (options) {
|
|
83
|
-
if (options.apply) {
|
|
84
|
-
if (options.apply.ineq) {
|
|
85
|
-
where =
|
|
86
|
-
where +
|
|
87
|
-
` AND '${options.apply.field}' ${options.apply.ineq.op} '${options.apply.ineq.value}'`;
|
|
88
|
-
}
|
|
89
|
-
if (options.apply.sort) {
|
|
90
|
-
sort = `ORDER BY ${options.apply.field} ${options.apply.sort}`;
|
|
91
|
-
}
|
|
92
|
-
} else if (options.sort) {
|
|
93
|
-
sort = `ORDER BY`;
|
|
94
|
-
for (let i = 0; i < options.sort.length; i++) {
|
|
95
|
-
sort = sort + ` ${options.sort[i].field} ${options.sort[i].order}`;
|
|
96
|
-
if (i < options.sort.length - 1) {
|
|
97
|
-
sort = sort + " , ";
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
let limit = "";
|
|
103
|
-
let offset = "";
|
|
104
|
-
if (options?.limit) {
|
|
105
|
-
limit = `LIMIT ${options.limit}`;
|
|
106
|
-
}
|
|
107
|
-
if (options?.offset) {
|
|
108
|
-
offset = `OFFSET ${options.offset}`;
|
|
109
|
-
}
|
|
110
|
-
var query = `SELECT * FROM \`${this.datasetname}\`.${modelname} WHERE ${where} ${sort} ${limit} ${offset};`;
|
|
111
|
-
return await this.run(query);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
async getOne(modelname, filter) {
|
|
115
|
-
this.metrics.getOne(modelname, filter);
|
|
116
|
-
let where = this.constructWhereClause(filter);
|
|
117
|
-
let query = `SELECT * FROM \`${this.datasetname}.${modelname}\` WHERE ${where} LIMIT 1;`;
|
|
118
|
-
let rows = await this.run(query);
|
|
119
|
-
return rows[0];
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
async create(modelname, sampleObject) {
|
|
123
|
-
this.sync.create(modelname, sampleObject);
|
|
124
|
-
this.metrics.create(modelname, sampleObject);
|
|
125
|
-
|
|
126
|
-
let schema = Object.entries(sampleObject).map(([key, value]) => {
|
|
127
|
-
let type;
|
|
128
|
-
switch (typeof value) {
|
|
129
|
-
case "string":
|
|
130
|
-
type = value.length > 255 ? "STRING" : "STRING";
|
|
131
|
-
break;
|
|
132
|
-
case "number":
|
|
133
|
-
type = "FLOAT";
|
|
134
|
-
break;
|
|
135
|
-
case "boolean":
|
|
136
|
-
type = "BOOL";
|
|
137
|
-
break;
|
|
138
|
-
case "object":
|
|
139
|
-
type = "STRING";
|
|
140
|
-
break;
|
|
141
|
-
default:
|
|
142
|
-
type = "STRING";
|
|
143
|
-
}
|
|
144
|
-
return { name: key, type: type };
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
const table = this.bq.dataset(this.datasetname).table(modelname);
|
|
148
|
-
try {
|
|
149
|
-
await table.create({ schema });
|
|
150
|
-
} catch (err) {
|
|
151
|
-
if (err.code !== 409) {
|
|
152
|
-
if (this.loglevel > 0) console.error(err);
|
|
153
|
-
throw err;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
async insert(modelname, object) {
|
|
159
|
-
this.sync.insert(modelname, object);
|
|
160
|
-
this.metrics.insert(modelname, object);
|
|
161
|
-
Object.keys(object).forEach((k) => {
|
|
162
|
-
if (typeof object[k] == "object") object[k] = JSON.stringify(object[k]);
|
|
163
|
-
});
|
|
164
|
-
const table = this.bq.dataset(this.datasetname).table(modelname);
|
|
165
|
-
try {
|
|
166
|
-
await table.insert(object);
|
|
167
|
-
} catch (err) {
|
|
168
|
-
if (this.loglevel > 0) console.error(err);
|
|
169
|
-
throw err;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
async update(modelname, filter, object) {
|
|
174
|
-
this.sync.update(modelname, filter, object);
|
|
175
|
-
this.metrics.update(modelname, filter, object);
|
|
176
|
-
|
|
177
|
-
let where = this.constructWhereClause(filter);
|
|
178
|
-
let setClauses = Object.entries(object)
|
|
179
|
-
.map(([key, value]) => `${key} = '${JSON.stringify(value)}'`)
|
|
180
|
-
.join(", ");
|
|
181
|
-
|
|
182
|
-
let query = `UPDATE \`${this.datasetname}.${modelname}\` SET ${setClauses} WHERE ${where};`;
|
|
183
|
-
try {
|
|
184
|
-
await this.run(query);
|
|
185
|
-
} catch (err) {
|
|
186
|
-
if (err.message?.indexOf("would affect rows in the streaming buffer")) {
|
|
187
|
-
return this.withRetry(() => {
|
|
188
|
-
return this.run(query);
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
if (this.loglevel > 4) console.error("Error in update", err);
|
|
192
|
-
throw err;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
async delete(modelname, filter) {
|
|
197
|
-
this.sync.delete(modelname, filter);
|
|
198
|
-
this.metrics.delete(modelname, filter);
|
|
199
|
-
|
|
200
|
-
let where = this.constructWhereClause(filter);
|
|
201
|
-
let query = `DELETE FROM \`${this.datasetname}.${modelname}\` WHERE ${where};`;
|
|
202
|
-
try {
|
|
203
|
-
return await this.run(query);
|
|
204
|
-
} catch (err) {
|
|
205
|
-
if (err.message?.indexOf("would affect rows in the streaming buffer")) {
|
|
206
|
-
return this.withRetry(() => {
|
|
207
|
-
return this.run(query);
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
if (this.loglevel > 4) console.error("Error in delete", err);
|
|
211
|
-
throw err;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
async withRetry(funct, delay = 100, times = 0) {
|
|
216
|
-
let ct = 0;
|
|
217
|
-
while (true) {
|
|
218
|
-
try {
|
|
219
|
-
await this.sleep(delay);
|
|
220
|
-
return await funct();
|
|
221
|
-
} catch (e) {
|
|
222
|
-
if (ct++ > times) throw e;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
async close() {
|
|
228
|
-
if (this.loglevel > 1) {
|
|
229
|
-
console.log("BigQueryDB: Cleanup complete");
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
module.exports = {
|
|
235
|
-
BigQueryDB,
|
|
236
|
-
};
|
|
1
|
+
const { MultiDbORM } = require("./multidb");
|
|
2
|
+
const { Metrics } = require("./metrics");
|
|
3
|
+
const { Sync } = require("../sync");
|
|
4
|
+
// const { MultiDbORM } = require('./multidb');
|
|
5
|
+
|
|
6
|
+
class BigQueryDB {
|
|
7
|
+
sync = new Sync();
|
|
8
|
+
metrics = new Metrics();
|
|
9
|
+
bq;
|
|
10
|
+
serviceAccount;
|
|
11
|
+
loglevel = 0;
|
|
12
|
+
constructor(serviceAccountObject, datasetname) {
|
|
13
|
+
// super();
|
|
14
|
+
this.serviceAccount = serviceAccountObject;
|
|
15
|
+
|
|
16
|
+
const { BigQuery } = require("@google-cloud/bigquery");
|
|
17
|
+
|
|
18
|
+
this.datasetname = datasetname;
|
|
19
|
+
this.bq = new BigQuery({
|
|
20
|
+
credentials: serviceAccountObject,
|
|
21
|
+
projectId: serviceAccountObject.project_id,
|
|
22
|
+
});
|
|
23
|
+
this.dbType = "bigquery";
|
|
24
|
+
this.reqMade = 0;
|
|
25
|
+
this.db = this.bq;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
sleep(timeout) {
|
|
29
|
+
return new Promise((resolve) => {
|
|
30
|
+
setTimeout(resolve, timeout);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async run(query) {
|
|
35
|
+
this.reqMade++;
|
|
36
|
+
try {
|
|
37
|
+
const [job] = await this.bq.createQueryJob({ query });
|
|
38
|
+
const [rows] = await job.getQueryResults();
|
|
39
|
+
if (this.loglevel > 3) {
|
|
40
|
+
console.log("Query ", query, " -> ", rows);
|
|
41
|
+
}
|
|
42
|
+
return rows;
|
|
43
|
+
} catch (err) {
|
|
44
|
+
if (this.loglevel > 0) {
|
|
45
|
+
console.error("BigQuery Error:", query, " -> ", err);
|
|
46
|
+
}
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
mapToKV(key, value) {
|
|
52
|
+
let kv;
|
|
53
|
+
switch (typeof value) {
|
|
54
|
+
case "string":
|
|
55
|
+
kv = `${key} = '${value}'`;
|
|
56
|
+
break;
|
|
57
|
+
case "number":
|
|
58
|
+
case "boolean":
|
|
59
|
+
kv = `${key} = ${value}`;
|
|
60
|
+
break;
|
|
61
|
+
case "object":
|
|
62
|
+
kv = `${key} = '${JSON.stringify(value)}'`;
|
|
63
|
+
break;
|
|
64
|
+
default:
|
|
65
|
+
kv = `${key} = '${value}'`;
|
|
66
|
+
}
|
|
67
|
+
return kv;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
constructWhereClause(filter) {
|
|
71
|
+
return (
|
|
72
|
+
Object.entries(filter)
|
|
73
|
+
.map(([key, value]) => this.mapToKV(key, value))
|
|
74
|
+
.join(" AND ") + " AND TRUE"
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async get(modelname, filter, options) {
|
|
79
|
+
this.metrics.get(modelname, filter, options);
|
|
80
|
+
var where = this.constructWhereClause(filter);
|
|
81
|
+
var sort = "";
|
|
82
|
+
if (options) {
|
|
83
|
+
if (options.apply) {
|
|
84
|
+
if (options.apply.ineq) {
|
|
85
|
+
where =
|
|
86
|
+
where +
|
|
87
|
+
` AND '${options.apply.field}' ${options.apply.ineq.op} '${options.apply.ineq.value}'`;
|
|
88
|
+
}
|
|
89
|
+
if (options.apply.sort) {
|
|
90
|
+
sort = `ORDER BY ${options.apply.field} ${options.apply.sort}`;
|
|
91
|
+
}
|
|
92
|
+
} else if (options.sort) {
|
|
93
|
+
sort = `ORDER BY`;
|
|
94
|
+
for (let i = 0; i < options.sort.length; i++) {
|
|
95
|
+
sort = sort + ` ${options.sort[i].field} ${options.sort[i].order}`;
|
|
96
|
+
if (i < options.sort.length - 1) {
|
|
97
|
+
sort = sort + " , ";
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let limit = "";
|
|
103
|
+
let offset = "";
|
|
104
|
+
if (options?.limit) {
|
|
105
|
+
limit = `LIMIT ${options.limit}`;
|
|
106
|
+
}
|
|
107
|
+
if (options?.offset) {
|
|
108
|
+
offset = `OFFSET ${options.offset}`;
|
|
109
|
+
}
|
|
110
|
+
var query = `SELECT * FROM \`${this.datasetname}\`.${modelname} WHERE ${where} ${sort} ${limit} ${offset};`;
|
|
111
|
+
return await this.run(query);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async getOne(modelname, filter) {
|
|
115
|
+
this.metrics.getOne(modelname, filter);
|
|
116
|
+
let where = this.constructWhereClause(filter);
|
|
117
|
+
let query = `SELECT * FROM \`${this.datasetname}.${modelname}\` WHERE ${where} LIMIT 1;`;
|
|
118
|
+
let rows = await this.run(query);
|
|
119
|
+
return rows[0];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
async create(modelname, sampleObject) {
|
|
123
|
+
this.sync.create(modelname, sampleObject);
|
|
124
|
+
this.metrics.create(modelname, sampleObject);
|
|
125
|
+
|
|
126
|
+
let schema = Object.entries(sampleObject).map(([key, value]) => {
|
|
127
|
+
let type;
|
|
128
|
+
switch (typeof value) {
|
|
129
|
+
case "string":
|
|
130
|
+
type = value.length > 255 ? "STRING" : "STRING";
|
|
131
|
+
break;
|
|
132
|
+
case "number":
|
|
133
|
+
type = "FLOAT";
|
|
134
|
+
break;
|
|
135
|
+
case "boolean":
|
|
136
|
+
type = "BOOL";
|
|
137
|
+
break;
|
|
138
|
+
case "object":
|
|
139
|
+
type = "STRING";
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
type = "STRING";
|
|
143
|
+
}
|
|
144
|
+
return { name: key, type: type };
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
const table = this.bq.dataset(this.datasetname).table(modelname);
|
|
148
|
+
try {
|
|
149
|
+
await table.create({ schema });
|
|
150
|
+
} catch (err) {
|
|
151
|
+
if (err.code !== 409) {
|
|
152
|
+
if (this.loglevel > 0) console.error(err);
|
|
153
|
+
throw err;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async insert(modelname, object) {
|
|
159
|
+
this.sync.insert(modelname, object);
|
|
160
|
+
this.metrics.insert(modelname, object);
|
|
161
|
+
Object.keys(object).forEach((k) => {
|
|
162
|
+
if (typeof object[k] == "object") object[k] = JSON.stringify(object[k]);
|
|
163
|
+
});
|
|
164
|
+
const table = this.bq.dataset(this.datasetname).table(modelname);
|
|
165
|
+
try {
|
|
166
|
+
await table.insert(object);
|
|
167
|
+
} catch (err) {
|
|
168
|
+
if (this.loglevel > 0) console.error(err);
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
async update(modelname, filter, object) {
|
|
174
|
+
this.sync.update(modelname, filter, object);
|
|
175
|
+
this.metrics.update(modelname, filter, object);
|
|
176
|
+
|
|
177
|
+
let where = this.constructWhereClause(filter);
|
|
178
|
+
let setClauses = Object.entries(object)
|
|
179
|
+
.map(([key, value]) => `${key} = '${JSON.stringify(value)}'`)
|
|
180
|
+
.join(", ");
|
|
181
|
+
|
|
182
|
+
let query = `UPDATE \`${this.datasetname}.${modelname}\` SET ${setClauses} WHERE ${where};`;
|
|
183
|
+
try {
|
|
184
|
+
await this.run(query);
|
|
185
|
+
} catch (err) {
|
|
186
|
+
if (err.message?.indexOf("would affect rows in the streaming buffer")) {
|
|
187
|
+
return this.withRetry(() => {
|
|
188
|
+
return this.run(query);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (this.loglevel > 4) console.error("Error in update", err);
|
|
192
|
+
throw err;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
async delete(modelname, filter) {
|
|
197
|
+
this.sync.delete(modelname, filter);
|
|
198
|
+
this.metrics.delete(modelname, filter);
|
|
199
|
+
|
|
200
|
+
let where = this.constructWhereClause(filter);
|
|
201
|
+
let query = `DELETE FROM \`${this.datasetname}.${modelname}\` WHERE ${where};`;
|
|
202
|
+
try {
|
|
203
|
+
return await this.run(query);
|
|
204
|
+
} catch (err) {
|
|
205
|
+
if (err.message?.indexOf("would affect rows in the streaming buffer")) {
|
|
206
|
+
return this.withRetry(() => {
|
|
207
|
+
return this.run(query);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
if (this.loglevel > 4) console.error("Error in delete", err);
|
|
211
|
+
throw err;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
async withRetry(funct, delay = 100, times = 0) {
|
|
216
|
+
let ct = 0;
|
|
217
|
+
while (true) {
|
|
218
|
+
try {
|
|
219
|
+
await this.sleep(delay);
|
|
220
|
+
return await funct();
|
|
221
|
+
} catch (e) {
|
|
222
|
+
if (ct++ > times) throw e;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
async close() {
|
|
228
|
+
if (this.loglevel > 1) {
|
|
229
|
+
console.log("BigQueryDB: Cleanup complete");
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
module.exports = {
|
|
235
|
+
BigQueryDB,
|
|
236
|
+
};
|
package/engines/firestoredb.d.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { MultiDbORM } from './multidb';
|
|
2
|
-
|
|
3
|
-
interface ServiceAccount {
|
|
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 FireStoreDB extends MultiDbORM {
|
|
17
|
-
admin: any; // Replace 'any' with actual Firebase Admin library types
|
|
18
|
-
serviceAccount: ServiceAccount;
|
|
19
|
-
|
|
20
|
-
constructor(serviceAccount: ServiceAccount, appname?: string);
|
|
21
|
-
|
|
22
|
-
run(query: string): Promise<any>;
|
|
23
|
-
|
|
24
|
-
attachOptions(modelref: any, options: any): any;
|
|
25
|
-
|
|
26
|
-
_get(modelname: string, filter: any, options?: any): Promise<any>;
|
|
27
|
-
|
|
28
|
-
get(modelname: string, filter: any, options?: any): Promise<any>;
|
|
29
|
-
|
|
30
|
-
getOne(modelname: string, filter: any, id?: string, options?: any): Promise<any>;
|
|
31
|
-
|
|
32
|
-
create(modelname: string, sampleObject: any): Promise<any>;
|
|
33
|
-
|
|
34
|
-
insert(modelname: string, object: any, id?: string): Promise<any>;
|
|
35
|
-
|
|
36
|
-
update(modelname: string, filter: any, object: any, id?: string): Promise<any>;
|
|
37
|
-
|
|
38
|
-
delete(modelname: string, filter: any, id?: string): Promise<any>;
|
|
39
|
-
}
|
|
1
|
+
import { MultiDbORM } from './multidb';
|
|
2
|
+
|
|
3
|
+
interface ServiceAccount {
|
|
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 FireStoreDB extends MultiDbORM {
|
|
17
|
+
admin: any; // Replace 'any' with actual Firebase Admin library types
|
|
18
|
+
serviceAccount: ServiceAccount;
|
|
19
|
+
|
|
20
|
+
constructor(serviceAccount: ServiceAccount, appname?: string);
|
|
21
|
+
|
|
22
|
+
run(query: string): Promise<any>;
|
|
23
|
+
|
|
24
|
+
attachOptions(modelref: any, options: any): any;
|
|
25
|
+
|
|
26
|
+
_get(modelname: string, filter: any, options?: any): Promise<any>;
|
|
27
|
+
|
|
28
|
+
get(modelname: string, filter: any, options?: any): Promise<any>;
|
|
29
|
+
|
|
30
|
+
getOne(modelname: string, filter: any, id?: string, options?: any): Promise<any>;
|
|
31
|
+
|
|
32
|
+
create(modelname: string, sampleObject: any): Promise<any>;
|
|
33
|
+
|
|
34
|
+
insert(modelname: string, object: any, id?: string): Promise<any>;
|
|
35
|
+
|
|
36
|
+
update(modelname: string, filter: any, object: any, id?: string): Promise<any>;
|
|
37
|
+
|
|
38
|
+
delete(modelname: string, filter: any, id?: string): Promise<any>;
|
|
39
|
+
}
|