@l-v-yonsama/multi-platform-database-drivers 0.1.1 → 0.1.2
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/build/__tests__/db/drivers/AwsS3Driver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/AwsS3Driver.test.js +83 -0
- package/build/__tests__/db/drivers/AwsS3Driver.test.js.map +1 -0
- package/build/__tests__/db/drivers/MySQLDriver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/MySQLDriver.test.js +115 -0
- package/build/__tests__/db/drivers/MySQLDriver.test.js.map +1 -0
- package/build/__tests__/db/drivers/PostgresDriver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/PostgresDriver.test.js +112 -0
- package/build/__tests__/db/drivers/PostgresDriver.test.js.map +1 -0
- package/build/__tests__/db/drivers/RedisDriver.test.d.ts +1 -0
- package/build/__tests__/db/drivers/RedisDriver.test.js +106 -0
- package/build/__tests__/db/drivers/RedisDriver.test.js.map +1 -0
- package/build/src/db/DBError.d.ts +7 -0
- package/build/src/db/DBError.js +20 -0
- package/build/src/db/DBError.js.map +1 -0
- package/build/src/db/drivers/AwsS3Driver.d.ts +38 -0
- package/build/src/db/drivers/AwsS3Driver.js +457 -0
- package/build/src/db/drivers/AwsS3Driver.js.map +1 -0
- package/build/src/db/drivers/BaseDriver.d.ts +40 -0
- package/build/src/db/drivers/BaseDriver.js +209 -0
- package/build/src/db/drivers/BaseDriver.js.map +1 -0
- package/build/src/db/drivers/MySQLDriver.d.ts +20 -0
- package/build/src/db/drivers/MySQLDriver.js +254 -0
- package/build/src/db/drivers/MySQLDriver.js.map +1 -0
- package/build/src/db/drivers/PostgresDriver.d.ts +22 -0
- package/build/src/db/drivers/PostgresDriver.js +297 -0
- package/build/src/db/drivers/PostgresDriver.js.map +1 -0
- package/build/src/db/drivers/RedisDriver.d.ts +23 -0
- package/build/src/db/drivers/RedisDriver.js +231 -0
- package/build/src/db/drivers/RedisDriver.js.map +1 -0
- package/build/src/db/manager.d.ts +8 -0
- package/build/src/db/manager.js +87 -0
- package/build/src/db/manager.js.map +1 -0
- package/build/src/db/resource/DbResource.d.ts +188 -0
- package/build/src/db/resource/DbResource.js +420 -0
- package/build/src/db/resource/DbResource.js.map +1 -0
- package/build/src/db/resource/MultipleResultSetDataHolder.d.ts +29 -0
- package/build/src/db/resource/MultipleResultSetDataHolder.js +106 -0
- package/build/src/db/resource/MultipleResultSetDataHolder.js.map +1 -0
- package/build/src/db/resource/ResourceUtil.d.ts +39 -0
- package/build/src/db/resource/ResourceUtil.js +337 -0
- package/build/src/db/resource/ResourceUtil.js.map +1 -0
- package/build/src/db/resource/ResultSetDataHolder.d.ts +126 -0
- package/build/src/db/resource/ResultSetDataHolder.js +722 -0
- package/build/src/db/resource/ResultSetDataHolder.js.map +1 -0
- package/build/src/db/resource/types/DBType.d.ts +18 -0
- package/build/src/db/resource/types/DBType.js +52 -0
- package/build/src/db/resource/types/DBType.js.map +1 -0
- package/build/src/db/resource/types/GeneralColumnType.d.ts +75 -0
- package/build/src/db/resource/types/GeneralColumnType.js +332 -0
- package/build/src/db/resource/types/GeneralColumnType.js.map +1 -0
- package/build/src/db/resource/types/MySQLColumnType.d.ts +42 -0
- package/build/src/db/resource/types/MySQLColumnType.js +142 -0
- package/build/src/db/resource/types/MySQLColumnType.js.map +1 -0
- package/build/src/db/resource/types/ODBCVendorType.d.ts +3 -0
- package/build/src/db/resource/types/ODBCVendorType.js +8 -0
- package/build/src/db/resource/types/ODBCVendorType.js.map +1 -0
- package/build/src/db/resource/types/PostgresColumnType.d.ts +53 -0
- package/build/src/db/resource/types/PostgresColumnType.js +105 -0
- package/build/src/db/resource/types/PostgresColumnType.js.map +1 -0
- package/build/src/db/resource/types/RedisKeyType.d.ts +12 -0
- package/build/src/db/resource/types/RedisKeyType.js +55 -0
- package/build/src/db/resource/types/RedisKeyType.js.map +1 -0
- package/build/src/db/resource/types/ResourceType.d.ts +10 -0
- package/build/src/db/resource/types/ResourceType.js +15 -0
- package/build/src/db/resource/types/ResourceType.js.map +1 -0
- package/build/src/main.d.ts +0 -0
- package/build/src/main.js +3 -0
- package/build/src/main.js.map +1 -0
- package/build/src/service/request/general_db_request.d.ts +18 -0
- package/build/src/service/request/general_db_request.js +14 -0
- package/build/src/service/request/general_db_request.js.map +1 -0
- package/{src/service/request/redis_request.ts → build/src/service/request/redis_request.d.ts} +8 -11
- package/build/src/service/request/redis_request.js +14 -0
- package/build/src/service/request/redis_request.js.map +1 -0
- package/build/src/service/request/s3_request.d.ts +14 -0
- package/build/src/service/request/s3_request.js +12 -0
- package/build/src/service/request/s3_request.js.map +1 -0
- package/build/src/service/response/GeneralReponse.d.ts +6 -0
- package/build/src/service/response/GeneralReponse.js +12 -0
- package/build/src/service/response/GeneralReponse.js.map +1 -0
- package/build/src/types/DateModifiedType.d.ts +14 -0
- package/build/src/types/DateModifiedType.js +68 -0
- package/build/src/types/DateModifiedType.js.map +1 -0
- package/build/src/types/FileKindType.d.ts +12 -0
- package/build/src/types/FileKindType.js +75 -0
- package/build/src/types/FileKindType.js.map +1 -0
- package/build/src/util/file_util.d.ts +22 -0
- package/build/src/util/file_util.js +143 -0
- package/build/src/util/file_util.js.map +1 -0
- package/package.json +5 -1
- package/.editorconfig +0 -15
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -30
- package/.github/workflows/npm-publish-github-packages.yml +0 -50
- package/.prettierrc +0 -12
- package/__tests__/db/drivers/AwsS3Driver.test.ts +0 -97
- package/__tests__/db/drivers/MySQLDriver.test.ts +0 -140
- package/__tests__/db/drivers/PostgresDriver.test.ts +0 -139
- package/__tests__/db/drivers/RedisDriver.test.ts +0 -156
- package/jest.config.js +0 -18
- package/src/db/DBError.ts +0 -26
- package/src/db/drivers/AwsS3Driver.ts +0 -539
- package/src/db/drivers/BaseDriver.ts +0 -256
- package/src/db/drivers/MongoDriver.js +0 -110
- package/src/db/drivers/MySQLDriver.ts +0 -318
- package/src/db/drivers/PostgresDriver.ts +0 -363
- package/src/db/drivers/RedisDriver.ts +0 -277
- package/src/db/manager.ts +0 -95
- package/src/db/resource/DbResource.ts +0 -579
- package/src/db/resource/MultipleResultSetDataHolder.ts +0 -119
- package/src/db/resource/ResourceUtil.ts +0 -366
- package/src/db/resource/ResultSetDataHolder.ts +0 -806
- package/src/db/resource/types/DBType.ts +0 -43
- package/src/db/resource/types/GeneralColumnType.ts +0 -321
- package/src/db/resource/types/MySQLColumnType.ts +0 -134
- package/src/db/resource/types/ODBCVendorType.ts +0 -3
- package/src/db/resource/types/PostgresColumnType.ts +0 -94
- package/src/db/resource/types/RedisKeyType.ts +0 -48
- package/src/db/resource/types/ResourceType.ts +0 -10
- package/src/main.ts +0 -1
- package/src/service/request/general_db_request.ts +0 -20
- package/src/service/request/s3_request.ts +0 -15
- package/src/service/response/GeneralReponse.ts +0 -10
- package/src/types/DateModifiedType.ts +0 -75
- package/src/types/FileKindType.ts +0 -80
- package/src/util/file_util.ts +0 -178
- package/tsconfig.json +0 -23
- package/tsconfig.release.json +0 -23
- package/unit-test.yml +0 -41
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
const BaseDriver_1 = require("./BaseDriver");
|
|
5
|
+
const ResultSetDataHolder_1 = require("../resource/ResultSetDataHolder");
|
|
6
|
+
const DbResource_1 = require("../resource/DbResource");
|
|
7
|
+
const pg_1 = require("pg");
|
|
8
|
+
const PostgresColumnType_1 = require("../resource/types/PostgresColumnType");
|
|
9
|
+
const enum_values_1 = require("enum-values");
|
|
10
|
+
const GeneralColumnType_1 = require("../resource/types/GeneralColumnType");
|
|
11
|
+
class PostgresDriver extends BaseDriver_1.default {
|
|
12
|
+
constructor(conRes) {
|
|
13
|
+
super(conRes);
|
|
14
|
+
}
|
|
15
|
+
// name: 'name',
|
|
16
|
+
// tableID: 12822,
|
|
17
|
+
// columnID: 2,
|
|
18
|
+
// dataTypeID: 1043,
|
|
19
|
+
// dataTypeSize: -1,
|
|
20
|
+
// dataTypeModifier: -1,
|
|
21
|
+
// format: 'text' }
|
|
22
|
+
fieldInfo2Key(fieldInfo, resolver) {
|
|
23
|
+
if (fieldInfo.name.startsWith('c_')) {
|
|
24
|
+
console.log(`★ ${fieldInfo.name.substring(2).toUpperCase()} = ${fieldInfo.dataTypeID}`);
|
|
25
|
+
}
|
|
26
|
+
const name = enum_values_1.EnumValues.getNameFromValue(PostgresColumnType_1.PostgresColumnType, PostgresColumnType_1.PostgresColumnType.parse(fieldInfo.dataTypeID));
|
|
27
|
+
const key = new ResultSetDataHolder_1.RdhKey(fieldInfo.name, GeneralColumnType_1.GeneralColumnType.parse(name), super.resolveColumnComment(fieldInfo.name, resolver));
|
|
28
|
+
return key;
|
|
29
|
+
}
|
|
30
|
+
async connectSub() {
|
|
31
|
+
let errorReason = '';
|
|
32
|
+
const options = Object.assign({
|
|
33
|
+
port: 5432,
|
|
34
|
+
host: '127.0.0.1',
|
|
35
|
+
database: 'postgres',
|
|
36
|
+
}, {
|
|
37
|
+
max: 1,
|
|
38
|
+
idleTimeoutMillis: 3000,
|
|
39
|
+
connectionTimeoutMillis: 1000,
|
|
40
|
+
port: this.conRes.port,
|
|
41
|
+
host: this.conRes.host,
|
|
42
|
+
user: this.conRes.user,
|
|
43
|
+
password: this.conRes.password,
|
|
44
|
+
database: this.conRes.database,
|
|
45
|
+
});
|
|
46
|
+
this.pool = new pg_1.default.Pool(options);
|
|
47
|
+
// the pool with emit an error on behalf of any idle clients
|
|
48
|
+
// it contains if a backend error or network partition happens
|
|
49
|
+
// this.pool.on('error', (err, client) => {
|
|
50
|
+
// // log.error('Unexpected error on idle client', err);
|
|
51
|
+
// });
|
|
52
|
+
// this.pool.on('acquire', function (client) {
|
|
53
|
+
// // log.info('acquire', client);
|
|
54
|
+
// });
|
|
55
|
+
// this.pool.on('connect', function (client) {
|
|
56
|
+
// // log.info('connect', client);
|
|
57
|
+
// });
|
|
58
|
+
errorReason = await this.test();
|
|
59
|
+
return errorReason;
|
|
60
|
+
}
|
|
61
|
+
async test(with_connect = false) {
|
|
62
|
+
let errorReason = '';
|
|
63
|
+
try {
|
|
64
|
+
if (with_connect) {
|
|
65
|
+
errorReason = await this.asyncConnect();
|
|
66
|
+
}
|
|
67
|
+
const rdh = await this.requestSql('SELECT NOW()');
|
|
68
|
+
if (rdh && rdh.errorMessage) {
|
|
69
|
+
errorReason = rdh.errorMessage;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
errorReason = e.message;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
if (with_connect) {
|
|
77
|
+
await this.asyncClose();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return errorReason;
|
|
81
|
+
}
|
|
82
|
+
// public
|
|
83
|
+
async requestSql(sql, options) {
|
|
84
|
+
// log.info("sql2=", sql);
|
|
85
|
+
let rdh = new ResultSetDataHolder_1.default([]);
|
|
86
|
+
try {
|
|
87
|
+
let binds = [];
|
|
88
|
+
if (options && options.binds) {
|
|
89
|
+
binds = options.binds;
|
|
90
|
+
}
|
|
91
|
+
const results = await this.pool.query(sql, binds);
|
|
92
|
+
// command: 'SELECT',
|
|
93
|
+
// rowCount: 5,
|
|
94
|
+
// oid: null,
|
|
95
|
+
// rows:
|
|
96
|
+
// [ anonymous { name: 'pg_catalog' },
|
|
97
|
+
// anonymous { name: 'pg_temp_1' },
|
|
98
|
+
// anonymous { name: 'pg_toast' },
|
|
99
|
+
// anonymous { name: 'pg_toast_temp_1' },
|
|
100
|
+
// anonymous { name: 'public' } ],
|
|
101
|
+
// fields: [ ],
|
|
102
|
+
// console.log('done.', results.fields)
|
|
103
|
+
if (results) {
|
|
104
|
+
let resolver;
|
|
105
|
+
if (options && options.needs_column_resolve === true) {
|
|
106
|
+
resolver = this.createColumnResolver(sql);
|
|
107
|
+
}
|
|
108
|
+
const fields = results.fields;
|
|
109
|
+
rdh = new ResultSetDataHolder_1.default(fields === undefined
|
|
110
|
+
? []
|
|
111
|
+
: fields.map((f) => this.fieldInfo2Key(f, resolver)));
|
|
112
|
+
if (results.rows) {
|
|
113
|
+
results.rows.forEach((result) => {
|
|
114
|
+
rdh.addRow(result);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
rdh = ResultSetDataHolder_1.default.create(err);
|
|
121
|
+
}
|
|
122
|
+
return rdh;
|
|
123
|
+
}
|
|
124
|
+
async countTables(tables, options) {
|
|
125
|
+
const list = new Array();
|
|
126
|
+
let counter = 1;
|
|
127
|
+
for (const st of tables.list) {
|
|
128
|
+
let prefix = '';
|
|
129
|
+
if (st.schema) {
|
|
130
|
+
prefix = st.schema + '.';
|
|
131
|
+
}
|
|
132
|
+
if (options && options.progress_callback) {
|
|
133
|
+
if (counter % 5 === 0) {
|
|
134
|
+
options.progress_callback(`Count ${prefix}${st.table}`, 70);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const sql = `SELECT COUNT(*) as count FROM ${prefix}${st.table}`;
|
|
138
|
+
try {
|
|
139
|
+
const results = await this.pool.query(sql, []);
|
|
140
|
+
if (results && results.rows && results.rows.length > 0) {
|
|
141
|
+
const row = results.rows[0];
|
|
142
|
+
const obj = Object.assign({ count: row.count }, st);
|
|
143
|
+
list.push(obj);
|
|
144
|
+
}
|
|
145
|
+
// eslint-disable-next-line no-empty
|
|
146
|
+
}
|
|
147
|
+
catch (e) { }
|
|
148
|
+
counter++;
|
|
149
|
+
}
|
|
150
|
+
return list;
|
|
151
|
+
}
|
|
152
|
+
async getResouces(options) {
|
|
153
|
+
if (!this.conRes) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
const dbResources = new Array();
|
|
157
|
+
const db_list = await this.asyncGetDatabases(this.conRes.database);
|
|
158
|
+
db_list.forEach((db) => dbResources.push(db));
|
|
159
|
+
const dbDatabase = db_list.find((d) => d.name === this.conRes.database);
|
|
160
|
+
const dbSchemas = await this.getSchemas(dbDatabase);
|
|
161
|
+
dbSchemas.forEach((res) => {
|
|
162
|
+
dbDatabase.addChild(res);
|
|
163
|
+
});
|
|
164
|
+
// const parallels = [];
|
|
165
|
+
for (const dbSchema of dbSchemas) {
|
|
166
|
+
const dbTables = await this.getTables(dbSchema);
|
|
167
|
+
dbTables.forEach((res) => dbSchema.addChild(res));
|
|
168
|
+
}
|
|
169
|
+
for (const dbSchema of dbSchemas) {
|
|
170
|
+
for (const dbTable of dbSchema.getChildren()) {
|
|
171
|
+
const dbColumns = await this.getColumns(dbTable);
|
|
172
|
+
dbColumns.forEach((res) => dbTable.addChild(res));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return dbResources;
|
|
176
|
+
}
|
|
177
|
+
async asyncGetDatabases(connection_database) {
|
|
178
|
+
const rdh = await this
|
|
179
|
+
.requestSql(`SELECT datname AS name, pg_encoding_to_char(encoding) AS comment
|
|
180
|
+
FROM pg_database ORDER BY datname`);
|
|
181
|
+
return rdh.rows.map((r) => {
|
|
182
|
+
const res = new DbResource_1.DbDatabase(r.values.name);
|
|
183
|
+
res.comment = r.values.comment;
|
|
184
|
+
res.disabled = res.name !== connection_database;
|
|
185
|
+
return res;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
async getSchemas(dbDatabase) {
|
|
189
|
+
const rdh = await this.requestSql(`SELECT SCHEMA_NAME AS name
|
|
190
|
+
FROM INFORMATION_SCHEMA.SCHEMATA
|
|
191
|
+
WHERE LOWER(SCHEMA_NAME) NOT IN ('information_schema', 'sys', 'performance_schema', 'pg_catalog', 'pg_toast', 'pg_temp_1', 'pg_toast_temp_1')
|
|
192
|
+
ORDER BY name`);
|
|
193
|
+
return rdh.rows.map((r) => {
|
|
194
|
+
const res = new DbResource_1.DbSchema(r.values.name);
|
|
195
|
+
return res;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
async getTables(dbSchema) {
|
|
199
|
+
let rdh = await this
|
|
200
|
+
.requestSql(`select quote_ident(m.relname) as qname, COALESCE(d.description, '') as comment
|
|
201
|
+
from pg_stat_all_tables as m
|
|
202
|
+
LEFT JOIN pg_description as d ON (m.relid = d.objoid AND d.objsubid=0)
|
|
203
|
+
WHERE m.schemaname='${dbSchema.getName()}'
|
|
204
|
+
ORDER BY m.relname`);
|
|
205
|
+
const list = rdh.rows.map((r) => {
|
|
206
|
+
const res = new DbResource_1.DbTable(r.values.qname, 'TABLE', r.values.comment);
|
|
207
|
+
return res;
|
|
208
|
+
});
|
|
209
|
+
rdh = await this
|
|
210
|
+
.requestSql(`select quote_ident(viewname) as qname, definition from pg_catalog.pg_views
|
|
211
|
+
where schemaname = '${dbSchema.getName()}'
|
|
212
|
+
order by viewname`);
|
|
213
|
+
return list.concat(rdh.rows.map((r) => {
|
|
214
|
+
const res = new DbResource_1.DbTable(r.values.qname, 'VIEW', '');
|
|
215
|
+
return res;
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
async getColumns(dbTable) {
|
|
219
|
+
const binds = [dbTable.getParent().getName(), dbTable.getName()];
|
|
220
|
+
const rdh = await this.requestSql(`select
|
|
221
|
+
col.COLUMN_NAME as name,
|
|
222
|
+
quote_ident(col.COLUMN_NAME) as qname,
|
|
223
|
+
data_type as col_type,
|
|
224
|
+
case
|
|
225
|
+
when IS_NULLABLE = 'YES' then 1
|
|
226
|
+
else 0
|
|
227
|
+
end as nullable,
|
|
228
|
+
case
|
|
229
|
+
when pk.column_name is not null then 'PRI'
|
|
230
|
+
else null
|
|
231
|
+
end as col_key,
|
|
232
|
+
COLUMN_DEFAULT as col_default,
|
|
233
|
+
null as col_extra,
|
|
234
|
+
(
|
|
235
|
+
select
|
|
236
|
+
pg_catalog.col_description(oid,
|
|
237
|
+
col.ordinal_position::int)
|
|
238
|
+
from
|
|
239
|
+
pg_catalog.pg_class c
|
|
240
|
+
where
|
|
241
|
+
c.relname = col.table_name) as comment
|
|
242
|
+
from
|
|
243
|
+
INFORMATION_SCHEMA.columns col
|
|
244
|
+
left join (
|
|
245
|
+
select
|
|
246
|
+
tc.table_catalog,
|
|
247
|
+
tc.table_schema,
|
|
248
|
+
tc.table_name,
|
|
249
|
+
ccu.column_name
|
|
250
|
+
from
|
|
251
|
+
information_schema.table_constraints tc
|
|
252
|
+
inner join
|
|
253
|
+
information_schema.constraint_column_usage ccu
|
|
254
|
+
on
|
|
255
|
+
(tc.table_catalog = ccu.table_catalog
|
|
256
|
+
and
|
|
257
|
+
tc.table_schema = ccu.table_schema
|
|
258
|
+
and
|
|
259
|
+
tc.table_name = ccu.table_name
|
|
260
|
+
and
|
|
261
|
+
tc.constraint_name = ccu.constraint_name)
|
|
262
|
+
where
|
|
263
|
+
tc.constraint_type = 'PRIMARY KEY'
|
|
264
|
+
) pk on
|
|
265
|
+
(col.table_catalog = pk.table_catalog
|
|
266
|
+
and col.table_schema = pk.table_schema
|
|
267
|
+
and col.table_name = pk.table_name
|
|
268
|
+
and col.column_name = pk.column_name)
|
|
269
|
+
where
|
|
270
|
+
col.table_schema = $1 AND quote_ident(col.table_name) = $2
|
|
271
|
+
order by
|
|
272
|
+
col.ordinal_position`, { binds });
|
|
273
|
+
return rdh.rows.map((r) => {
|
|
274
|
+
const type_name = enum_values_1.EnumValues.getNameFromValue(PostgresColumnType_1.PostgresColumnType, PostgresColumnType_1.PostgresColumnType.parse(r.values.col_type));
|
|
275
|
+
const res = new DbResource_1.DbColumn(r.values.qname, GeneralColumnType_1.GeneralColumnType.parse(type_name), {
|
|
276
|
+
nullable: r.values.nullable === 1,
|
|
277
|
+
key: r.values.col_key,
|
|
278
|
+
default: r.values.col_default,
|
|
279
|
+
extra: r.values.col_extra,
|
|
280
|
+
}, r.values.comment);
|
|
281
|
+
return res;
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
async closeSub() {
|
|
285
|
+
try {
|
|
286
|
+
if (this.pool) {
|
|
287
|
+
await this.pool.end();
|
|
288
|
+
}
|
|
289
|
+
return '';
|
|
290
|
+
}
|
|
291
|
+
catch (e) {
|
|
292
|
+
return e.message;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
exports.default = PostgresDriver;
|
|
297
|
+
//# sourceMappingURL=PostgresDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresDriver.js","sourceRoot":"","sources":["../../../../src/db/drivers/PostgresDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import BaseDriver, { RequestSqlOptions } from './BaseDriver';
|
|
2
|
+
import { DbConnection, DbResource, DbKey, SchemaAndTableHints, TableRows } from '../resource/DbResource';
|
|
3
|
+
import { Redis } from 'ioredis';
|
|
4
|
+
import ResultSetDataHolder from '../resource/ResultSetDataHolder';
|
|
5
|
+
import { RedisKeyType } from '../resource/types/RedisKeyType';
|
|
6
|
+
import { RedisRequest } from '../../service/request/redis_request';
|
|
7
|
+
export default class RedisDriver extends BaseDriver {
|
|
8
|
+
client: Redis | undefined;
|
|
9
|
+
databases: number;
|
|
10
|
+
constructor(conRes: DbConnection);
|
|
11
|
+
connectSub(): Promise<string>;
|
|
12
|
+
test(with_connect?: boolean): Promise<string>;
|
|
13
|
+
requestSql(sql: string, options?: RequestSqlOptions): Promise<ResultSetDataHolder>;
|
|
14
|
+
countTables(tables: SchemaAndTableHints, options: any): Promise<TableRows[]>;
|
|
15
|
+
executeCommand(req: RedisRequest): Promise<DbKey | string | number>;
|
|
16
|
+
scan(db_index: number, key: string, count: number, with_value: boolean, progressCallback: Function): Promise<Array<DbKey>>;
|
|
17
|
+
getValueByKey(client: Redis, key: string, type: RedisKeyType): Promise<any>;
|
|
18
|
+
getResouces(options: {
|
|
19
|
+
progress_callback?: Function | undefined;
|
|
20
|
+
params?: any;
|
|
21
|
+
}): Promise<Array<DbResource>>;
|
|
22
|
+
closeSub(): Promise<string>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
const BaseDriver_1 = require("./BaseDriver");
|
|
5
|
+
const DbResource_1 = require("../resource/DbResource");
|
|
6
|
+
const ioredis_1 = require("ioredis");
|
|
7
|
+
const ResultSetDataHolder_1 = require("../resource/ResultSetDataHolder");
|
|
8
|
+
const RedisKeyType_1 = require("../resource/types/RedisKeyType");
|
|
9
|
+
const redis_request_1 = require("../../service/request/redis_request");
|
|
10
|
+
class RedisDriver extends BaseDriver_1.default {
|
|
11
|
+
constructor(conRes) {
|
|
12
|
+
super(conRes);
|
|
13
|
+
this.databases = 16;
|
|
14
|
+
}
|
|
15
|
+
async connectSub() {
|
|
16
|
+
try {
|
|
17
|
+
const options = Object.assign({
|
|
18
|
+
port: 6379,
|
|
19
|
+
host: '127.0.0.1',
|
|
20
|
+
password: 'auth',
|
|
21
|
+
db: 0,
|
|
22
|
+
}, {
|
|
23
|
+
port: this.conRes.port,
|
|
24
|
+
host: this.conRes.host,
|
|
25
|
+
password: this.conRes.password,
|
|
26
|
+
db: this.conRes.database,
|
|
27
|
+
retryStrategy: function () {
|
|
28
|
+
return 'No!';
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
if (this.isNeedsSsh()) {
|
|
32
|
+
options.host = '127.0.0.1';
|
|
33
|
+
options.port = this.sshLocalPort;
|
|
34
|
+
}
|
|
35
|
+
options.connectTimeout = 5000;
|
|
36
|
+
if (this.conRes.hasUrl()) {
|
|
37
|
+
// Connect to 127.0.0.1:6380, db 4, using password "authpassword":
|
|
38
|
+
// "redis://:authpassword@127.0.0.1:6380/4"
|
|
39
|
+
this.client = new ioredis_1.Redis(this.conRes.url);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.client = new ioredis_1.Redis(options);
|
|
43
|
+
}
|
|
44
|
+
// dbs= [ [ null, '# Serverxxxx' ], [ null, [ 'databases', '16' ] ] ]
|
|
45
|
+
try {
|
|
46
|
+
// ReplyError: EXECABORT Transaction discarded because of previous errors.
|
|
47
|
+
const dbs = await this.client
|
|
48
|
+
.multi()
|
|
49
|
+
.info()
|
|
50
|
+
.config('GET', 'databases')
|
|
51
|
+
.exec();
|
|
52
|
+
if (dbs && dbs.length > 1 && dbs[1].length > 1) {
|
|
53
|
+
const dbs2 = dbs[1][1]; // dbs2= [ 'databases', '16' ]
|
|
54
|
+
if (dbs2 && dbs2.length > 1) {
|
|
55
|
+
this.databases = parseInt(dbs2[1], 10);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
this.databases = 16;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
return e.message;
|
|
65
|
+
}
|
|
66
|
+
return '';
|
|
67
|
+
}
|
|
68
|
+
async test(with_connect = false) {
|
|
69
|
+
let errorReason = '';
|
|
70
|
+
try {
|
|
71
|
+
if (with_connect) {
|
|
72
|
+
const con_result = await this.asyncConnect();
|
|
73
|
+
if (con_result) {
|
|
74
|
+
return con_result;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
await this.client.ping();
|
|
78
|
+
if (with_connect) {
|
|
79
|
+
await this.asyncClose();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
errorReason = e.message;
|
|
84
|
+
}
|
|
85
|
+
return errorReason;
|
|
86
|
+
}
|
|
87
|
+
async requestSql(sql, options) {
|
|
88
|
+
return ResultSetDataHolder_1.default.createEmpty();
|
|
89
|
+
}
|
|
90
|
+
async countTables(tables, options) {
|
|
91
|
+
return new Array();
|
|
92
|
+
}
|
|
93
|
+
async executeCommand(req) {
|
|
94
|
+
let ret = '';
|
|
95
|
+
if (!this.client) {
|
|
96
|
+
return ret;
|
|
97
|
+
}
|
|
98
|
+
await this.client.select(req.index);
|
|
99
|
+
let r = '';
|
|
100
|
+
switch (req.command) {
|
|
101
|
+
case redis_request_1.RedisCommandType.GetValue:
|
|
102
|
+
{
|
|
103
|
+
r = await this.getValueByKey(this.client, req.key, req.type);
|
|
104
|
+
const ttl = await this.client.ttl(req.key);
|
|
105
|
+
ret = new DbResource_1.DbKey(req.key, req.type, ttl);
|
|
106
|
+
if (ret.ttl > 0) {
|
|
107
|
+
ret.ttl_confirmation_datetime = new Date().getTime();
|
|
108
|
+
}
|
|
109
|
+
ret.val = r;
|
|
110
|
+
}
|
|
111
|
+
break;
|
|
112
|
+
case redis_request_1.RedisCommandType.SetValue:
|
|
113
|
+
if (req.options) {
|
|
114
|
+
await this.client.set(req.key, req.options.val);
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case redis_request_1.RedisCommandType.Flushall:
|
|
118
|
+
ret = await this.client.flushall();
|
|
119
|
+
break;
|
|
120
|
+
case redis_request_1.RedisCommandType.Flushdb:
|
|
121
|
+
ret = await this.client.flushdb();
|
|
122
|
+
break;
|
|
123
|
+
case redis_request_1.RedisCommandType.Dbsize:
|
|
124
|
+
ret = await this.client.dbsize();
|
|
125
|
+
break;
|
|
126
|
+
case redis_request_1.RedisCommandType.Info:
|
|
127
|
+
ret = await this.client.info(req.options.section);
|
|
128
|
+
break;
|
|
129
|
+
default:
|
|
130
|
+
console.error('undefined.', req.command);
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
return ret;
|
|
134
|
+
}
|
|
135
|
+
scan(db_index, key, count, with_value, progressCallback) {
|
|
136
|
+
return new Promise((resolve) => {
|
|
137
|
+
const currentClient = this.client;
|
|
138
|
+
this.client.select(db_index);
|
|
139
|
+
const stream = this.client.scanStream({
|
|
140
|
+
match: key,
|
|
141
|
+
count,
|
|
142
|
+
});
|
|
143
|
+
const ret = new Array();
|
|
144
|
+
stream.on('data', (resultKeys) => {
|
|
145
|
+
resultKeys.forEach((key) => {
|
|
146
|
+
ret.push(new DbResource_1.DbKey(key));
|
|
147
|
+
});
|
|
148
|
+
progressCallback('Key scanning now.', Math.round((ret.length * 100) / count));
|
|
149
|
+
if (ret.length > count) {
|
|
150
|
+
stream.close(); // ScanStream.close()
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
stream.on('end', () => {
|
|
154
|
+
progressCallback('Key scanning done. get type and ttl.', 80);
|
|
155
|
+
if (ret.length > count) {
|
|
156
|
+
ret.splice(count - 1, ret.length - count);
|
|
157
|
+
}
|
|
158
|
+
const parallels = [];
|
|
159
|
+
ret.forEach((keyRes) => {
|
|
160
|
+
parallels.push((async () => {
|
|
161
|
+
keyRes.type = RedisKeyType_1.RedisKeyType.parse(await currentClient.type(keyRes.getName()));
|
|
162
|
+
keyRes.ttl = await currentClient.ttl(keyRes.getName());
|
|
163
|
+
if (keyRes.ttl > 0) {
|
|
164
|
+
keyRes.ttl_confirmation_datetime = new Date().getTime();
|
|
165
|
+
}
|
|
166
|
+
if (with_value) {
|
|
167
|
+
keyRes.val = await this.getValueByKey(currentClient, keyRes.getName(), keyRes.type);
|
|
168
|
+
}
|
|
169
|
+
})());
|
|
170
|
+
});
|
|
171
|
+
(async () => {
|
|
172
|
+
await Promise.all(parallels);
|
|
173
|
+
progressCallback('Key scanning done.', 100);
|
|
174
|
+
resolve(ret);
|
|
175
|
+
})();
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
async getValueByKey(client, key, type) {
|
|
180
|
+
switch (type) {
|
|
181
|
+
case RedisKeyType_1.RedisKeyType.string:
|
|
182
|
+
return await client.get(key);
|
|
183
|
+
case RedisKeyType_1.RedisKeyType.list:
|
|
184
|
+
return await client.lrange(key, 0, -1);
|
|
185
|
+
case RedisKeyType_1.RedisKeyType.set:
|
|
186
|
+
return await client.smembers(key);
|
|
187
|
+
case RedisKeyType_1.RedisKeyType.zset:
|
|
188
|
+
return await client.zrange(key, 0, -1);
|
|
189
|
+
case RedisKeyType_1.RedisKeyType.hash:
|
|
190
|
+
return await client.hgetall(key);
|
|
191
|
+
default:
|
|
192
|
+
console.log('whattype??', type);
|
|
193
|
+
}
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
async getResouces(options) {
|
|
197
|
+
if (!this.conRes) {
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
const dbResources = new Array();
|
|
201
|
+
const keyspace = await this.client.info('keyspace');
|
|
202
|
+
// db0:keys=7,expires=0,avg_ttl=0
|
|
203
|
+
// db3:keys=1,expires=1,avg_ttl=4996199
|
|
204
|
+
const re = /db([0-9]+):keys=([0-9]+),expires=([0-9]+),avg_ttl=([0-9]+)/g;
|
|
205
|
+
let m;
|
|
206
|
+
while ((m = re.exec(keyspace))) {
|
|
207
|
+
const db = m[1];
|
|
208
|
+
const keys = parseInt(m[2], 10);
|
|
209
|
+
const expires = parseInt(m[3], 10);
|
|
210
|
+
const avg_ttl = parseInt(m[4], 10);
|
|
211
|
+
const dbRes = new DbResource_1.RedisDatabase(db, keys, expires, avg_ttl);
|
|
212
|
+
dbResources.push(dbRes);
|
|
213
|
+
}
|
|
214
|
+
for (let i = 0; i < this.databases; i++) {
|
|
215
|
+
const name = `${i}`;
|
|
216
|
+
if (!dbResources.some((r) => r.getName() === name)) {
|
|
217
|
+
const dbRes = new DbResource_1.RedisDatabase(name, 0, 0, 0);
|
|
218
|
+
dbResources.push(dbRes);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return dbResources;
|
|
222
|
+
}
|
|
223
|
+
async closeSub() {
|
|
224
|
+
if (this.client) {
|
|
225
|
+
await this.client.quit();
|
|
226
|
+
}
|
|
227
|
+
return '';
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.default = RedisDriver;
|
|
231
|
+
//# sourceMappingURL=RedisDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedisDriver.js","sourceRoot":"","sources":["../../../../src/db/drivers/RedisDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import BaseDriver from './drivers/BaseDriver';
|
|
2
|
+
import { DbConnection } from './resource/DbResource';
|
|
3
|
+
export { getConResList, getDefByName, getDefById, getDriverById, asyncCloseAll, };
|
|
4
|
+
declare function getConResList(): Array<DbConnection>;
|
|
5
|
+
declare function getDefById(id: string): DbConnection | undefined;
|
|
6
|
+
declare function getDefByName(defName: string): DbConnection | undefined;
|
|
7
|
+
declare function getDriverById(id: string): BaseDriver | undefined;
|
|
8
|
+
declare function asyncCloseAll(): Promise<string>;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.asyncCloseAll = exports.getDriverById = exports.getDefById = exports.getDefByName = exports.getConResList = void 0;
|
|
4
|
+
// import MongoDriver from './drivers/MongoDriver'
|
|
5
|
+
// import ODBCDriver from './drivers/ODBCDriver';
|
|
6
|
+
const RedisDriver_1 = require("./drivers/RedisDriver");
|
|
7
|
+
const MySQLDriver_1 = require("./drivers/MySQLDriver");
|
|
8
|
+
const PostgresDriver_1 = require("./drivers/PostgresDriver");
|
|
9
|
+
const AwsS3Driver_1 = require("./drivers/AwsS3Driver");
|
|
10
|
+
const DBType_1 = require("./resource/types/DBType");
|
|
11
|
+
const driverMap = new Map();
|
|
12
|
+
const conResList = new Array();
|
|
13
|
+
function getConResList() {
|
|
14
|
+
return conResList;
|
|
15
|
+
}
|
|
16
|
+
exports.getConResList = getConResList;
|
|
17
|
+
function getDefById(id) {
|
|
18
|
+
return conResList.find((def) => def.id === id);
|
|
19
|
+
}
|
|
20
|
+
exports.getDefById = getDefById;
|
|
21
|
+
function getDefByName(defName) {
|
|
22
|
+
return conResList.find((def) => def.name === defName);
|
|
23
|
+
}
|
|
24
|
+
exports.getDefByName = getDefByName;
|
|
25
|
+
function getDriverById(id) {
|
|
26
|
+
const conDef = getDefById(id);
|
|
27
|
+
if (conDef === undefined) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
let driver = driverMap.get(id);
|
|
31
|
+
if (driver) {
|
|
32
|
+
return driver;
|
|
33
|
+
}
|
|
34
|
+
driver = createDriver(conDef);
|
|
35
|
+
if (driver) {
|
|
36
|
+
driverMap.set(id, driver);
|
|
37
|
+
}
|
|
38
|
+
return driver;
|
|
39
|
+
}
|
|
40
|
+
exports.getDriverById = getDriverById;
|
|
41
|
+
function createDriver(conRes) {
|
|
42
|
+
let driver = undefined;
|
|
43
|
+
switch (conRes.db_type) {
|
|
44
|
+
// case DBType.ODBC:
|
|
45
|
+
// driver = new ODBCDriver(conRes);
|
|
46
|
+
// break;
|
|
47
|
+
case DBType_1.DBType.MySQL:
|
|
48
|
+
driver = new MySQLDriver_1.default(conRes);
|
|
49
|
+
break;
|
|
50
|
+
case DBType_1.DBType.Postgres:
|
|
51
|
+
driver = new PostgresDriver_1.default(conRes);
|
|
52
|
+
break;
|
|
53
|
+
case DBType_1.DBType.Redis:
|
|
54
|
+
driver = new RedisDriver_1.default(conRes);
|
|
55
|
+
break;
|
|
56
|
+
// case DBType.Firestore:
|
|
57
|
+
// // driver = new FirestoreDriver(conRes);
|
|
58
|
+
// break;
|
|
59
|
+
case DBType_1.DBType.AwsS3:
|
|
60
|
+
case DBType_1.DBType.Minio:
|
|
61
|
+
driver = new AwsS3Driver_1.default(conRes);
|
|
62
|
+
break;
|
|
63
|
+
// case DBType.Mongodb:
|
|
64
|
+
// // driver = new MongoDriver(conDef)
|
|
65
|
+
// break
|
|
66
|
+
// case DBType.IndexedDB:
|
|
67
|
+
// driver = new IndexedDBDriver(conRes);
|
|
68
|
+
// break;
|
|
69
|
+
default:
|
|
70
|
+
throw new Error(`${conRes.db_type} is not supported.`);
|
|
71
|
+
}
|
|
72
|
+
return driver;
|
|
73
|
+
}
|
|
74
|
+
async function asyncCloseAll() {
|
|
75
|
+
let errorMessage = '';
|
|
76
|
+
driverMap.forEach(async (driver) => {
|
|
77
|
+
try {
|
|
78
|
+
await driver.asyncClose();
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
errorMessage += e.message + '\n';
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return errorMessage;
|
|
85
|
+
}
|
|
86
|
+
exports.asyncCloseAll = asyncCloseAll;
|
|
87
|
+
//# sourceMappingURL=manager.js.map
|