@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.
Files changed (130) hide show
  1. package/build/__tests__/db/drivers/AwsS3Driver.test.d.ts +1 -0
  2. package/build/__tests__/db/drivers/AwsS3Driver.test.js +83 -0
  3. package/build/__tests__/db/drivers/AwsS3Driver.test.js.map +1 -0
  4. package/build/__tests__/db/drivers/MySQLDriver.test.d.ts +1 -0
  5. package/build/__tests__/db/drivers/MySQLDriver.test.js +115 -0
  6. package/build/__tests__/db/drivers/MySQLDriver.test.js.map +1 -0
  7. package/build/__tests__/db/drivers/PostgresDriver.test.d.ts +1 -0
  8. package/build/__tests__/db/drivers/PostgresDriver.test.js +112 -0
  9. package/build/__tests__/db/drivers/PostgresDriver.test.js.map +1 -0
  10. package/build/__tests__/db/drivers/RedisDriver.test.d.ts +1 -0
  11. package/build/__tests__/db/drivers/RedisDriver.test.js +106 -0
  12. package/build/__tests__/db/drivers/RedisDriver.test.js.map +1 -0
  13. package/build/src/db/DBError.d.ts +7 -0
  14. package/build/src/db/DBError.js +20 -0
  15. package/build/src/db/DBError.js.map +1 -0
  16. package/build/src/db/drivers/AwsS3Driver.d.ts +38 -0
  17. package/build/src/db/drivers/AwsS3Driver.js +457 -0
  18. package/build/src/db/drivers/AwsS3Driver.js.map +1 -0
  19. package/build/src/db/drivers/BaseDriver.d.ts +40 -0
  20. package/build/src/db/drivers/BaseDriver.js +209 -0
  21. package/build/src/db/drivers/BaseDriver.js.map +1 -0
  22. package/build/src/db/drivers/MySQLDriver.d.ts +20 -0
  23. package/build/src/db/drivers/MySQLDriver.js +254 -0
  24. package/build/src/db/drivers/MySQLDriver.js.map +1 -0
  25. package/build/src/db/drivers/PostgresDriver.d.ts +22 -0
  26. package/build/src/db/drivers/PostgresDriver.js +297 -0
  27. package/build/src/db/drivers/PostgresDriver.js.map +1 -0
  28. package/build/src/db/drivers/RedisDriver.d.ts +23 -0
  29. package/build/src/db/drivers/RedisDriver.js +231 -0
  30. package/build/src/db/drivers/RedisDriver.js.map +1 -0
  31. package/build/src/db/manager.d.ts +8 -0
  32. package/build/src/db/manager.js +87 -0
  33. package/build/src/db/manager.js.map +1 -0
  34. package/build/src/db/resource/DbResource.d.ts +188 -0
  35. package/build/src/db/resource/DbResource.js +420 -0
  36. package/build/src/db/resource/DbResource.js.map +1 -0
  37. package/build/src/db/resource/MultipleResultSetDataHolder.d.ts +29 -0
  38. package/build/src/db/resource/MultipleResultSetDataHolder.js +106 -0
  39. package/build/src/db/resource/MultipleResultSetDataHolder.js.map +1 -0
  40. package/build/src/db/resource/ResourceUtil.d.ts +39 -0
  41. package/build/src/db/resource/ResourceUtil.js +337 -0
  42. package/build/src/db/resource/ResourceUtil.js.map +1 -0
  43. package/build/src/db/resource/ResultSetDataHolder.d.ts +126 -0
  44. package/build/src/db/resource/ResultSetDataHolder.js +722 -0
  45. package/build/src/db/resource/ResultSetDataHolder.js.map +1 -0
  46. package/build/src/db/resource/types/DBType.d.ts +18 -0
  47. package/build/src/db/resource/types/DBType.js +52 -0
  48. package/build/src/db/resource/types/DBType.js.map +1 -0
  49. package/build/src/db/resource/types/GeneralColumnType.d.ts +75 -0
  50. package/build/src/db/resource/types/GeneralColumnType.js +332 -0
  51. package/build/src/db/resource/types/GeneralColumnType.js.map +1 -0
  52. package/build/src/db/resource/types/MySQLColumnType.d.ts +42 -0
  53. package/build/src/db/resource/types/MySQLColumnType.js +142 -0
  54. package/build/src/db/resource/types/MySQLColumnType.js.map +1 -0
  55. package/build/src/db/resource/types/ODBCVendorType.d.ts +3 -0
  56. package/build/src/db/resource/types/ODBCVendorType.js +8 -0
  57. package/build/src/db/resource/types/ODBCVendorType.js.map +1 -0
  58. package/build/src/db/resource/types/PostgresColumnType.d.ts +53 -0
  59. package/build/src/db/resource/types/PostgresColumnType.js +105 -0
  60. package/build/src/db/resource/types/PostgresColumnType.js.map +1 -0
  61. package/build/src/db/resource/types/RedisKeyType.d.ts +12 -0
  62. package/build/src/db/resource/types/RedisKeyType.js +55 -0
  63. package/build/src/db/resource/types/RedisKeyType.js.map +1 -0
  64. package/build/src/db/resource/types/ResourceType.d.ts +10 -0
  65. package/build/src/db/resource/types/ResourceType.js +15 -0
  66. package/build/src/db/resource/types/ResourceType.js.map +1 -0
  67. package/build/src/main.d.ts +0 -0
  68. package/build/src/main.js +3 -0
  69. package/build/src/main.js.map +1 -0
  70. package/build/src/service/request/general_db_request.d.ts +18 -0
  71. package/build/src/service/request/general_db_request.js +14 -0
  72. package/build/src/service/request/general_db_request.js.map +1 -0
  73. package/{src/service/request/redis_request.ts → build/src/service/request/redis_request.d.ts} +8 -11
  74. package/build/src/service/request/redis_request.js +14 -0
  75. package/build/src/service/request/redis_request.js.map +1 -0
  76. package/build/src/service/request/s3_request.d.ts +14 -0
  77. package/build/src/service/request/s3_request.js +12 -0
  78. package/build/src/service/request/s3_request.js.map +1 -0
  79. package/build/src/service/response/GeneralReponse.d.ts +6 -0
  80. package/build/src/service/response/GeneralReponse.js +12 -0
  81. package/build/src/service/response/GeneralReponse.js.map +1 -0
  82. package/build/src/types/DateModifiedType.d.ts +14 -0
  83. package/build/src/types/DateModifiedType.js +68 -0
  84. package/build/src/types/DateModifiedType.js.map +1 -0
  85. package/build/src/types/FileKindType.d.ts +12 -0
  86. package/build/src/types/FileKindType.js +75 -0
  87. package/build/src/types/FileKindType.js.map +1 -0
  88. package/build/src/util/file_util.d.ts +22 -0
  89. package/build/src/util/file_util.js +143 -0
  90. package/build/src/util/file_util.js.map +1 -0
  91. package/package.json +5 -1
  92. package/.editorconfig +0 -15
  93. package/.eslintignore +0 -1
  94. package/.eslintrc.json +0 -30
  95. package/.github/workflows/npm-publish-github-packages.yml +0 -50
  96. package/.prettierrc +0 -12
  97. package/__tests__/db/drivers/AwsS3Driver.test.ts +0 -97
  98. package/__tests__/db/drivers/MySQLDriver.test.ts +0 -140
  99. package/__tests__/db/drivers/PostgresDriver.test.ts +0 -139
  100. package/__tests__/db/drivers/RedisDriver.test.ts +0 -156
  101. package/jest.config.js +0 -18
  102. package/src/db/DBError.ts +0 -26
  103. package/src/db/drivers/AwsS3Driver.ts +0 -539
  104. package/src/db/drivers/BaseDriver.ts +0 -256
  105. package/src/db/drivers/MongoDriver.js +0 -110
  106. package/src/db/drivers/MySQLDriver.ts +0 -318
  107. package/src/db/drivers/PostgresDriver.ts +0 -363
  108. package/src/db/drivers/RedisDriver.ts +0 -277
  109. package/src/db/manager.ts +0 -95
  110. package/src/db/resource/DbResource.ts +0 -579
  111. package/src/db/resource/MultipleResultSetDataHolder.ts +0 -119
  112. package/src/db/resource/ResourceUtil.ts +0 -366
  113. package/src/db/resource/ResultSetDataHolder.ts +0 -806
  114. package/src/db/resource/types/DBType.ts +0 -43
  115. package/src/db/resource/types/GeneralColumnType.ts +0 -321
  116. package/src/db/resource/types/MySQLColumnType.ts +0 -134
  117. package/src/db/resource/types/ODBCVendorType.ts +0 -3
  118. package/src/db/resource/types/PostgresColumnType.ts +0 -94
  119. package/src/db/resource/types/RedisKeyType.ts +0 -48
  120. package/src/db/resource/types/ResourceType.ts +0 -10
  121. package/src/main.ts +0 -1
  122. package/src/service/request/general_db_request.ts +0 -20
  123. package/src/service/request/s3_request.ts +0 -15
  124. package/src/service/response/GeneralReponse.ts +0 -10
  125. package/src/types/DateModifiedType.ts +0 -75
  126. package/src/types/FileKindType.ts +0 -80
  127. package/src/util/file_util.ts +0 -178
  128. package/tsconfig.json +0 -23
  129. package/tsconfig.release.json +0 -23
  130. 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