@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,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const DBError_1 = require("../DBError");
4
+ const tunnel = require("tunnel-ssh");
5
+ const get_port_1 = require("get-port");
6
+ const ResourceUtil_1 = require("../resource/ResourceUtil");
7
+ const ResourceType_1 = require("../resource/types/ResourceType");
8
+ const DBType_1 = require("../resource/types/DBType");
9
+ const fs = require("fs");
10
+ class BaseDriver {
11
+ constructor(conRes) {
12
+ this.conRes = conRes;
13
+ this.isConnected = false;
14
+ // log.info(this.getName(), '★CREATED', this.conRes.id);
15
+ }
16
+ getName() {
17
+ return this.constructor.name;
18
+ }
19
+ getConnectionRes() {
20
+ return this.conRes;
21
+ }
22
+ initBaseStatus() {
23
+ this.isConnected = false;
24
+ }
25
+ isNeedsSsh() {
26
+ return this.conRes.hasSshSetting();
27
+ }
28
+ isQuery(sql) {
29
+ sql = sql.toLocaleLowerCase();
30
+ sql = sql.replace(/-- .+/, '');
31
+ sql = sql.replace(/(\r\n|\r|\n|\t| )+/g, ' ').trim();
32
+ // console.log('final sql =[' + sql + ']');
33
+ if (sql.match(/select[ ]+[^ ]+[ ]+from/)) {
34
+ return true;
35
+ }
36
+ return false;
37
+ }
38
+ createColumnResolver(sql) {
39
+ if (sql) {
40
+ const hints = this.parseSchemaAndTableHints(sql);
41
+ return { hints };
42
+ }
43
+ return { hints: { list: [] } };
44
+ }
45
+ parseSchemaAndTableHints(sql) {
46
+ const ret = { list: [] };
47
+ const myRegexp = /(FROM|UPDATE)[\s]+(([^\s()]+)\.)?([^\s()]+)/gim;
48
+ let match = myRegexp.exec(sql);
49
+ while (match != null) {
50
+ // sql=SELECT * FROM SSS.TTT
51
+ // [1]=SSS.TTT
52
+ // [2]=SSS.
53
+ // [3]=SSS
54
+ // [4]=TTT
55
+ ret.list.push({ schema: match[3], table: match[4] });
56
+ match = myRegexp.exec(sql);
57
+ }
58
+ return ret;
59
+ }
60
+ getProposals() {
61
+ if (this.conRes && DBType_1.DBType.isRDB(this.conRes.db_type)) {
62
+ const retList = [];
63
+ this.conRes.getChildren().forEach((db) => {
64
+ db.getChildren().forEach((schema) => {
65
+ schema.getChildren().forEach((table) => {
66
+ let table_comment = table.comment;
67
+ if (!table_comment) {
68
+ table_comment = table.name;
69
+ }
70
+ retList.push({
71
+ s: schema.name,
72
+ name: table.name,
73
+ comment: table.comment,
74
+ type: table.getResouceType(),
75
+ });
76
+ table.getChildren().forEach((column) => {
77
+ if (column.comment) {
78
+ retList.push({
79
+ s: schema.name,
80
+ t: table.name,
81
+ name: column.name,
82
+ comment: `${table_comment}.${column.comment}`,
83
+ type: column.getResouceType(),
84
+ });
85
+ }
86
+ else {
87
+ retList.push({
88
+ s: schema.name,
89
+ t: table.name,
90
+ name: column.name,
91
+ comment: `${table_comment}.${column.name}`,
92
+ type: column.getResouceType(),
93
+ });
94
+ }
95
+ });
96
+ });
97
+ });
98
+ });
99
+ return retList;
100
+ }
101
+ return [];
102
+ }
103
+ resolveColumn(column, resolver) {
104
+ if (resolver === undefined) {
105
+ return undefined;
106
+ }
107
+ if (this.conRes) {
108
+ for (let i = 0; i < resolver.hints.list.length; i++) {
109
+ const hints = resolver.hints.list[i];
110
+ const t = ResourceUtil_1.default.findResource(this.conRes, ResourceType_1.ResourceType.Table, hints.table);
111
+ if (t) {
112
+ // log.info(LOG_PREFIX, "#resolveColumn found table", hints.table);
113
+ return t.getChildByName(column, { quote_ident: true });
114
+ }
115
+ else {
116
+ // log.warn(LOG_PREFIX, "#resolveColumn not found table", hints.table);
117
+ }
118
+ }
119
+ }
120
+ else {
121
+ // log.warn(LOG_PREFIX, '#resolveColumn no connection res.')
122
+ }
123
+ return undefined;
124
+ }
125
+ resolveColumnComment(column, resolver) {
126
+ const c = this.resolveColumn(column, resolver);
127
+ if (c && c.comment) {
128
+ return c.comment;
129
+ }
130
+ return '';
131
+ }
132
+ async asyncConnectToSshServer() {
133
+ this.sshLocalPort = await (0, get_port_1.default)({ port: (0, get_port_1.portNumbers)(13000, 15100) });
134
+ // log.info(LOG_PREFIX, 'SSH Local host port is ', this.sshLocalPort)
135
+ return new Promise((resolve, reject) => {
136
+ const setting = Object.assign({}, this.conRes.ssh, {
137
+ localHost: '127.0.0.1',
138
+ localPort: this.sshLocalPort,
139
+ });
140
+ if (setting.auth_method === 'private_key') {
141
+ setting.privateKey = fs.readFileSync(setting.privateKeyPath, 'utf8');
142
+ }
143
+ this.sshServer = tunnel(setting, function (err) {
144
+ if (err) {
145
+ reject(err);
146
+ }
147
+ else {
148
+ resolve('');
149
+ }
150
+ });
151
+ // Use a listener to handle errors outside the callback
152
+ this.sshServer.on('error', function (err) {
153
+ console.error('Something bad happened:', err);
154
+ });
155
+ });
156
+ }
157
+ async asyncConnect() {
158
+ let errorReason = '';
159
+ try {
160
+ this.initBaseStatus();
161
+ if (this.conRes) {
162
+ if (this.isNeedsSsh()) {
163
+ await this.asyncConnectToSshServer();
164
+ }
165
+ errorReason = await this.connectSub();
166
+ }
167
+ else {
168
+ errorReason = 'Connection property is nothing';
169
+ }
170
+ }
171
+ catch (e) {
172
+ errorReason = e.message;
173
+ }
174
+ this.isConnected = errorReason === '';
175
+ return errorReason;
176
+ }
177
+ async asyncClose() {
178
+ let errorReason = '';
179
+ try {
180
+ if (this.conRes) {
181
+ if (this.isConnected) {
182
+ errorReason = await this.closeSub();
183
+ }
184
+ else {
185
+ // log.info('not connected, skip close.')
186
+ }
187
+ }
188
+ else {
189
+ errorReason = 'Connection property is nothing';
190
+ }
191
+ }
192
+ catch (e) {
193
+ errorReason = e.message;
194
+ }
195
+ finally {
196
+ if (this.sshServer) {
197
+ this.sshServer.close();
198
+ this.sshServer = undefined;
199
+ }
200
+ this.initBaseStatus();
201
+ }
202
+ return errorReason;
203
+ }
204
+ createDBError(message, sourceError) {
205
+ return new DBError_1.default(message, sourceError.code, sourceError.errno, sourceError.sqlMessage, sourceError.sqlState);
206
+ }
207
+ }
208
+ exports.default = BaseDriver;
209
+ //# sourceMappingURL=BaseDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDriver.js","sourceRoot":"","sources":["../../../../src/db/drivers/BaseDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import BaseDriver, { RequestSqlOptions } from './BaseDriver';
2
+ import ResultSetDataHolder, { RdhKey } from '../resource/ResultSetDataHolder';
3
+ import { DbConnection, DbResource, DbDatabase, DbSchema, DbTable, DbColumn, ColumnResolver, TableRows, SchemaAndTableHints } from '../resource/DbResource';
4
+ export default class MySQLDriver extends BaseDriver {
5
+ private client;
6
+ constructor(conRes: DbConnection);
7
+ fieldInfo2Key(fieldInfo: any, resolver?: ColumnResolver): RdhKey;
8
+ connectSub(): Promise<string>;
9
+ test(with_connect?: boolean): Promise<string>;
10
+ requestSql(sql: string, options?: RequestSqlOptions): Promise<ResultSetDataHolder>;
11
+ countTables(tables: SchemaAndTableHints, options: any): Promise<TableRows[]>;
12
+ getResouces(options: {
13
+ progress_callback?: Function | undefined;
14
+ params?: any;
15
+ }): Promise<Array<DbResource>>;
16
+ getSchemas(dbDatabase: DbDatabase): Promise<Array<DbSchema>>;
17
+ getTables(dbSchema: DbSchema): Promise<Array<DbTable>>;
18
+ getColumns(dbTable: DbTable): Promise<Array<DbColumn>>;
19
+ closeSub(): Promise<string>;
20
+ }
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const BaseDriver_1 = require("./BaseDriver");
4
+ const mysql = require("mysql2/promise");
5
+ const ResultSetDataHolder_1 = require("../resource/ResultSetDataHolder");
6
+ const DbResource_1 = require("../resource/DbResource");
7
+ const MySQLColumnType_1 = require("../resource/types/MySQLColumnType");
8
+ const enum_values_1 = require("enum-values");
9
+ const GeneralColumnType_1 = require("../resource/types/GeneralColumnType");
10
+ class MySQLDriver extends BaseDriver_1.default {
11
+ constructor(conRes) {
12
+ super(conRes);
13
+ }
14
+ fieldInfo2Key(fieldInfo, resolver) {
15
+ if (resolver) {
16
+ resolver.hints.list.push({ table: fieldInfo.orgTable });
17
+ }
18
+ const name = enum_values_1.EnumValues.getNameFromValue(MySQLColumnType_1.MySQLColumnType, MySQLColumnType_1.MySQLColumnType.parseByFieldInfo(fieldInfo));
19
+ const key = new ResultSetDataHolder_1.RdhKey(fieldInfo.name, GeneralColumnType_1.GeneralColumnType.parse(name), super.resolveColumnComment(fieldInfo.orgName, resolver));
20
+ if (key.type === GeneralColumnType_1.GeneralColumnType.UNKNOWN) {
21
+ // log.error(LOG_PREFIX, 'Unknownt=', fieldInfo)
22
+ }
23
+ // console.log('key=', key, EnumValues.getNameFromValue(GeneralColumnType, key.type));
24
+ return key;
25
+ }
26
+ async connectSub() {
27
+ let errorMessage = '';
28
+ const options = {
29
+ connectionLimit: 4,
30
+ multipleStatements: true,
31
+ port: this.conRes.port,
32
+ host: this.conRes.host,
33
+ user: this.conRes.user,
34
+ password: this.conRes.password,
35
+ database: this.conRes.database,
36
+ };
37
+ this.client = mysql.createPool(options);
38
+ try {
39
+ errorMessage = await this.test();
40
+ }
41
+ catch (e) {
42
+ errorMessage = e.message;
43
+ }
44
+ return errorMessage;
45
+ }
46
+ async test(with_connect = false) {
47
+ let errorReason = '';
48
+ if (with_connect) {
49
+ errorReason = await this.asyncConnect();
50
+ }
51
+ if (!errorReason) {
52
+ const rdh = await this.requestSql('SELECT 1 from DUAL');
53
+ if (rdh && rdh.errorMessage) {
54
+ return rdh.errorMessage;
55
+ }
56
+ if (with_connect) {
57
+ await this.asyncClose();
58
+ }
59
+ }
60
+ return errorReason;
61
+ }
62
+ // public
63
+ async requestSql(sql, options) {
64
+ // console.log('requestSql', sql);
65
+ let rdh = new ResultSetDataHolder_1.default([]);
66
+ if (this.client) {
67
+ let binds = [];
68
+ if (options && options.binds) {
69
+ binds = options.binds;
70
+ }
71
+ let resolver;
72
+ if (options && options.needs_column_resolve === true) {
73
+ resolver = this.createColumnResolver(sql);
74
+ }
75
+ const [rows, fields] = await this.client.execute(sql, binds);
76
+ try {
77
+ if (fields === undefined) {
78
+ // execute...
79
+ // Ok Packet {
80
+ // fieldCount: 0,
81
+ // affectedRows: 1,
82
+ // insertId: 0,
83
+ // serverStatus: 2,
84
+ // warningCount: 0,
85
+ // message: '',
86
+ // protocol41: true,
87
+ // changedRows: 0 }
88
+ const results = rows;
89
+ rdh = new ResultSetDataHolder_1.default([
90
+ 'fieldCount',
91
+ 'affectedRows',
92
+ 'insertId',
93
+ 'serverStatus',
94
+ 'warningStatus',
95
+ 'changedRows',
96
+ ]);
97
+ rdh.addRow({
98
+ fieldCount: results.fieldCount,
99
+ affectedRows: results.affectedRows,
100
+ insertId: results.insertId,
101
+ serverStatus: results.serverStatus,
102
+ warningStatus: results.warningStatus,
103
+ changedRows: results.changedRows,
104
+ });
105
+ }
106
+ else {
107
+ rdh = new ResultSetDataHolder_1.default(fields === undefined
108
+ ? []
109
+ : fields.map((f) => this.fieldInfo2Key(f, resolver)));
110
+ rows.forEach((result) => {
111
+ rdh.addRow(result);
112
+ });
113
+ }
114
+ }
115
+ catch (err) {
116
+ rdh = ResultSetDataHolder_1.default.create(err);
117
+ }
118
+ }
119
+ else {
120
+ new Error('No connection');
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.client.query(sql, []);
140
+ if (results && results.length > 0) {
141
+ const row = results[0];
142
+ const obj = Object.assign({ count: row.count }, st);
143
+ list.push(obj);
144
+ }
145
+ }
146
+ catch (e) {
147
+ console.error(e);
148
+ }
149
+ counter++;
150
+ }
151
+ return list;
152
+ }
153
+ async getResouces(options) {
154
+ if (!this.conRes) {
155
+ return [];
156
+ }
157
+ const dbResources = new Array();
158
+ const dbDatabase = new DbResource_1.DbDatabase(this.conRes.database);
159
+ dbResources.push(dbDatabase);
160
+ let progress = 10;
161
+ if (options.progress_callback) {
162
+ options.progress_callback(`${dbResources.length} Databases found.`, progress);
163
+ }
164
+ const dbSchemas = await this.getSchemas(dbDatabase);
165
+ dbSchemas.forEach((res) => {
166
+ dbDatabase.addChild(res);
167
+ });
168
+ progress = 30;
169
+ if (options.progress_callback) {
170
+ options.progress_callback(`${dbSchemas.length} Schemas found.`, progress);
171
+ }
172
+ // const parallels = [];
173
+ const incrPerSchema = Math.round(20 / dbSchemas.length);
174
+ for (const dbSchema of dbSchemas) {
175
+ const dbTables = await this.getTables(dbSchema);
176
+ dbTables.forEach((res) => dbSchema.addChild(res));
177
+ if (options.progress_callback) {
178
+ progress += incrPerSchema;
179
+ options.progress_callback(`${dbTables.length} Tables found in Schema[${dbSchema.getName()}].`, progress);
180
+ }
181
+ }
182
+ for (const dbSchema of dbSchemas) {
183
+ if (options.progress_callback) {
184
+ progress += incrPerSchema;
185
+ options.progress_callback(`Commnets finding now... in Schema[${dbSchema.getName()}].`, progress);
186
+ }
187
+ for (const dbTable of dbSchema.getChildren()) {
188
+ const dbColumns = await this.getColumns(dbTable);
189
+ dbColumns.forEach((res) => dbTable.addChild(res));
190
+ }
191
+ }
192
+ return dbResources;
193
+ }
194
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
195
+ async getSchemas(dbDatabase) {
196
+ const rdh = await this.requestSql(`SELECT SCHEMA_NAME AS name
197
+ FROM INFORMATION_SCHEMA.SCHEMATA
198
+ WHERE LOWER(SCHEMA_NAME) NOT IN ('information_schema', 'sys', 'performance_schema')
199
+ ORDER BY name`);
200
+ return rdh.rows.map((r) => {
201
+ const res = new DbResource_1.DbSchema(r.values.name);
202
+ return res;
203
+ });
204
+ }
205
+ async getTables(dbSchema) {
206
+ const rdh = await this
207
+ .requestSql(`SELECT TABLE_NAME as name, CASE TABLE_TYPE
208
+ WHEN 'BASE TABLE' THEN 'TABLE'
209
+ WHEN 'SYSTEM VIEW' THEN 'VIEW'
210
+ ELSE 'TABLE' END AS table_type,
211
+ TABLE_COMMENT as comment
212
+ FROM INFORMATION_SCHEMA.TABLES
213
+ WHERE TABLE_SCHEMA = '${dbSchema.getName()}' `);
214
+ return rdh.rows.map((r) => {
215
+ const res = new DbResource_1.DbTable(r.values.name, r.values.table_type, r.values.comment);
216
+ return res;
217
+ });
218
+ }
219
+ async getColumns(dbTable) {
220
+ const binds = [dbTable.getParent().getName(), dbTable.getName()];
221
+ const rdh = await this.requestSql(`SELECT COLUMN_NAME as name,
222
+ DATA_TYPE as col_type,
223
+ CASE WHEN IS_NULLABLE = 'YES' THEN 1 ELSE 0 END as nullable,
224
+ COLUMN_KEY as col_key,
225
+ COLUMN_DEFAULT as col_default,
226
+ EXTRA as col_extra,
227
+ COLUMN_COMMENT as comment
228
+ FROM INFORMATION_SCHEMA.COLUMNS
229
+ WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?`, { binds });
230
+ return rdh.rows.map((r) => {
231
+ const type_name = enum_values_1.EnumValues.getNameFromValue(MySQLColumnType_1.MySQLColumnType, MySQLColumnType_1.MySQLColumnType.parse(r.values.col_type));
232
+ const res = new DbResource_1.DbColumn(r.values.name, GeneralColumnType_1.GeneralColumnType.parse(type_name), {
233
+ nullable: r.values.nullable === 1,
234
+ key: r.values.col_key,
235
+ default: r.values.col_default,
236
+ extra: r.values.col_extra,
237
+ }, r.values.comment);
238
+ return res;
239
+ });
240
+ }
241
+ async closeSub() {
242
+ try {
243
+ if (this.client) {
244
+ await this.client.end();
245
+ }
246
+ return '';
247
+ }
248
+ catch (e) {
249
+ return e.message;
250
+ }
251
+ }
252
+ }
253
+ exports.default = MySQLDriver;
254
+ //# sourceMappingURL=MySQLDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MySQLDriver.js","sourceRoot":"","sources":["../../../../src/db/drivers/MySQLDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import BaseDriver, { RequestSqlOptions } from './BaseDriver';
2
+ import ResultSetDataHolder, { RdhKey } from '../resource/ResultSetDataHolder';
3
+ import { DbConnection, DbResource, DbDatabase, DbSchema, DbTable, DbColumn, ColumnResolver, TableRows, SchemaAndTableHints } from '../resource/DbResource';
4
+ import { default as pg } from 'pg';
5
+ export default class PostgresDriver extends BaseDriver {
6
+ private pool;
7
+ constructor(conRes: DbConnection);
8
+ fieldInfo2Key(fieldInfo: pg.FieldDef, resolver?: ColumnResolver): RdhKey;
9
+ connectSub(): Promise<string>;
10
+ test(with_connect?: boolean): Promise<string>;
11
+ requestSql(sql: string, options?: RequestSqlOptions): Promise<ResultSetDataHolder>;
12
+ countTables(tables: SchemaAndTableHints, options: any): Promise<TableRows[]>;
13
+ getResouces(options: {
14
+ progress_callback?: Function | undefined;
15
+ params?: any;
16
+ }): Promise<Array<DbResource>>;
17
+ asyncGetDatabases(connection_database: string): Promise<Array<DbDatabase>>;
18
+ getSchemas(dbDatabase: DbDatabase): Promise<Array<DbSchema>>;
19
+ getTables(dbSchema: DbSchema): Promise<Array<DbTable>>;
20
+ getColumns(dbTable: DbTable): Promise<Array<DbColumn>>;
21
+ closeSub(): Promise<string>;
22
+ }