@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,457 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable no-async-promise-executor */
4
+ /* eslint-disable @typescript-eslint/no-unused-vars */
5
+ const BaseDriver_1 = require("./BaseDriver");
6
+ const DbResource_1 = require("../resource/DbResource");
7
+ const ResultSetDataHolder_1 = require("../resource/ResultSetDataHolder");
8
+ const DBType_1 = require("../resource/types/DBType");
9
+ const client_s3_1 = require("@aws-sdk/client-s3");
10
+ class AwsS3Driver extends BaseDriver_1.default {
11
+ constructor(conRes) {
12
+ super(conRes);
13
+ }
14
+ async connectSub() {
15
+ this.config = {};
16
+ this.config.region = 'us-west-1';
17
+ if (this.conRes.region) {
18
+ this.config.region = this.conRes.region;
19
+ }
20
+ this.config.credentials = {
21
+ accessKeyId: this.conRes.user,
22
+ secretAccessKey: this.conRes.password,
23
+ };
24
+ if (this.conRes.db_type === DBType_1.DBType.Minio) {
25
+ this.config.endpoint = this.conRes.url;
26
+ this.config.s3ForcePathStyle = 'true';
27
+ }
28
+ this.s3Client = new client_s3_1.S3Client(this.config);
29
+ return this.test(false);
30
+ }
31
+ async test(with_connect = false) {
32
+ let errorReason = '';
33
+ if (with_connect) {
34
+ errorReason = await this.asyncConnect();
35
+ }
36
+ if (this.s3Client) {
37
+ try {
38
+ const a = await this.s3Client.send(new client_s3_1.ListBucketsCommand({}));
39
+ }
40
+ catch (e) {
41
+ console.error(e);
42
+ errorReason = e.message;
43
+ }
44
+ }
45
+ if (with_connect) {
46
+ await this.asyncClose();
47
+ }
48
+ return errorReason;
49
+ }
50
+ // getSignedUrl(bucket: string, key: string, expire_minutes: number): string {
51
+ // const signedUrlExpireSeconds = 60 * expire_minutes;
52
+ // const url = this.s3.getSignedUrl('getObject', {
53
+ // Bucket: bucket,
54
+ // Key: key,
55
+ // Expires: signedUrlExpireSeconds,
56
+ // });
57
+ // return url;
58
+ // }
59
+ async countTables(tables, options) {
60
+ return new Array();
61
+ }
62
+ abortSearch() {
63
+ if (this.finder) {
64
+ this.finder.abort();
65
+ }
66
+ }
67
+ // async search(
68
+ // bucket: string,
69
+ // prefix = '',
70
+ // options: {
71
+ // date_modified_type?: DateModifiedType;
72
+ // file_kind_type?: FileKindType;
73
+ // name?: string;
74
+ // progress_callback?: Function;
75
+ // },
76
+ // ): Promise<S3KeySearchResult> {
77
+ // const ret: S3KeySearchResult = {
78
+ // prefix,
79
+ // list: new Array<DbS3Key>(),
80
+ // ContinuationToken: '',
81
+ // };
82
+ // return new Promise<S3KeySearchResult>(async (resolve) => {
83
+ // try {
84
+ // this.finder = this.super_client.listObjects({
85
+ // recursive: true,
86
+ // s3Params: {
87
+ // Bucket: bucket,
88
+ // Delimiter: '',
89
+ // Prefix: prefix,
90
+ // },
91
+ // });
92
+ // this.finder.on('data', async function (data: any) {
93
+ // if (data.Contents) {
94
+ // for (let i = 0; i < data.Contents.length; i++) {
95
+ // const content = data.Contents[i];
96
+ // // {
97
+ // // Key: 'HLS/tutorial/1M/abc.m3u8',
98
+ // // LastModified: 2018-03-06T04:01:11.000Z,
99
+ // // ETag: '"9bcb47a6acdf633f72e113f442c7ba44"',
100
+ // // Size: 188,
101
+ // // StorageClass: 'STANDARD'
102
+ // // }
103
+ // const k = content.Key;
104
+ // if (k) {
105
+ // let valid = true;
106
+ // if (valid && options.name) {
107
+ // valid = ('' + k).indexOf(options.name) >= 0;
108
+ // }
109
+ // if (valid && options.date_modified_type) {
110
+ // valid = DateModifiedType.isValid(
111
+ // options.date_modified_type,
112
+ // content.LastModified,
113
+ // );
114
+ // }
115
+ // if (valid && options.file_kind_type) {
116
+ // valid = FileKindType.isValid(options.file_kind_type, k + '');
117
+ // }
118
+ // if (valid) {
119
+ // const key = new DbS3Key(k);
120
+ // key.updated = content.LastModified;
121
+ // // console.log('content.LastModified=', content.LastModified, content.LastModified.getTime());
122
+ // key.etag = content.ETag;
123
+ // key.size = content.Size;
124
+ // key.storage_class = content.StorageClass;
125
+ // // output_file_path
126
+ // const fResult = await FileUtil.getKeyFile(bucket, k);
127
+ // if (fResult.ok) {
128
+ // key.output_file_path = fResult.result;
129
+ // if (
130
+ // options.file_kind_type === FileKindType.Image &&
131
+ // key.size &&
132
+ // key.size < 100 * 1024
133
+ // ) {
134
+ // key.base64 = <string>(
135
+ // await FileUtil.readFile(fResult.result, 'base64')
136
+ // );
137
+ // }
138
+ // }
139
+ // ret.list.push(key);
140
+ // }
141
+ // }
142
+ // }
143
+ // }
144
+ // });
145
+ // this.finder.on('progress', () => {
146
+ // if (options.progress_callback) {
147
+ // options.progress_callback(
148
+ // this.finder.objectsFound,
149
+ // this.finder.progressAmount,
150
+ // this.finder.dirsFound,
151
+ // ret.list.length,
152
+ // );
153
+ // }
154
+ // });
155
+ // this.finder.on('end', function () {
156
+ // ret.list.sort((a, b) => b.updated.getTime() - a.updated.getTime());
157
+ // setTimeout(() => resolve(ret), 500);
158
+ // });
159
+ // } catch (e) {
160
+ // ret.error_message = e.message;
161
+ // resolve(ret);
162
+ // }
163
+ // });
164
+ // }
165
+ // async agetKeys(
166
+ // bucket: string,
167
+ // count: number,
168
+ // config: { prefix?: string; token?: string; scan_pattern?: string },
169
+ // ): Promise<S3KeySearchResult> {
170
+ // const opts: S3.ListObjectsV2Request = {
171
+ // Bucket: bucket,
172
+ // MaxKeys: count,
173
+ // Delimiter: '/',
174
+ // Prefix: '',
175
+ // };
176
+ // if (config) {
177
+ // if (config.prefix && config.prefix !== '/') {
178
+ // opts.Prefix = config.prefix;
179
+ // }
180
+ // if (config.scan_pattern) {
181
+ // opts.Prefix += config.scan_pattern;
182
+ // }
183
+ // if (config.token) {
184
+ // opts.ContinuationToken = config.token;
185
+ // }
186
+ // }
187
+ // const ret: S3KeySearchResult = {
188
+ // prefix: config.prefix,
189
+ // list: new Array<DbS3Key>(),
190
+ // ContinuationToken: '',
191
+ // };
192
+ // try {
193
+ // await this.listAllKeys(opts, count, ret);
194
+ // } catch (e) {
195
+ // ret.error_message = e.message;
196
+ // }
197
+ // return ret;
198
+ // }
199
+ // async asyncS3ListObjectsV2(
200
+ // opts: S3.ListObjectsV2Request,
201
+ // ): Promise<S3.Types.ListObjectsV2Output> {
202
+ // return new Promise<S3.Types.ListObjectsV2Output>((resolve) => {
203
+ // this.s3.listObjectsV2(opts, (err, data) => {
204
+ // resolve(data);
205
+ // });
206
+ // });
207
+ // }
208
+ // async listAllKeys(
209
+ // opts: S3.ListObjectsV2Request,
210
+ // count: number,
211
+ // result: S3KeySearchResult,
212
+ // ): Promise<void> {
213
+ // try {
214
+ // const data = await this.asyncS3ListObjectsV2(opts);
215
+ // console.info(LOG_PREFIX, 'data=', data);
216
+ // if (data.CommonPrefixes) {
217
+ // data.CommonPrefixes.forEach((p: any) => {
218
+ // let prefix = p.Prefix;
219
+ // // if (opts.Prefix) {
220
+ // // prefix = prefix.substring(opts.Prefix.length);
221
+ // // }
222
+ // const idx = prefix.lastIndexOf('/', prefix.length - 2);
223
+ // if (idx > 0) {
224
+ // prefix = prefix.substring(idx + 1);
225
+ // }
226
+ // const dir = new DbS3Key(prefix, true);
227
+ // console.log(LOG_PREFIX, 'L306 push', dir);
228
+ // result.list.push(dir);
229
+ // });
230
+ // }
231
+ // if (data.Contents) {
232
+ // for (let i = 0; i < data.Contents.length; i++) {
233
+ // const content = data.Contents[i];
234
+ // // {
235
+ // // Key: 'HLS/tutorial/1M/abc.m3u8',
236
+ // // LastModified: 2018-03-06T04:01:11.000Z,
237
+ // // ETag: '"9bcb47a6acdf633f72e113f442c7ba44"',
238
+ // // Size: 188,
239
+ // // StorageClass: 'STANDARD'
240
+ // // }
241
+ // let k = content.Key;
242
+ // if (opts.Prefix === k && k.endsWith('/')) {
243
+ // continue;
244
+ // }
245
+ // if (k) {
246
+ // const idx = k.lastIndexOf('/');
247
+ // if (idx > 0 && idx < k.length - 1) {
248
+ // k = k.substring(idx + 1);
249
+ // }
250
+ // const key = new DbS3Key(k);
251
+ // key.updated = content.LastModified;
252
+ // key.etag = content.ETag;
253
+ // key.size = content.Size;
254
+ // key.storage_class = content.StorageClass;
255
+ // // output_file_path
256
+ // const fResult = await FileUtil.getKeyFile(opts.Bucket, k);
257
+ // if (fResult.ok) {
258
+ // key.output_file_path = fResult.result;
259
+ // }
260
+ // console.log(LOG_PREFIX, 'L335 push', key);
261
+ // result.list.push(key);
262
+ // }
263
+ // }
264
+ // }
265
+ // if (data.IsTruncated) {
266
+ // const opts2: S3.ListObjectsV2Request = {
267
+ // Bucket: opts.Bucket,
268
+ // Delimiter: '/',
269
+ // Prefix: opts.Prefix,
270
+ // MaxKeys: count - result.list.length,
271
+ // };
272
+ // if (data.NextContinuationToken) {
273
+ // opts2.ContinuationToken = data.NextContinuationToken;
274
+ // result.ContinuationToken = data.NextContinuationToken;
275
+ // }
276
+ // await this.listAllKeys(opts2, count - result.list.length, result);
277
+ // }
278
+ // } catch (e) {
279
+ // console.error('L98', e);
280
+ // }
281
+ // }
282
+ // async getKeyRes(bucket: string, prefix: string): Promise<DbS3Key> {
283
+ // let key = null;
284
+ // try {
285
+ // const opts: S3.ListObjectsV2Request = {
286
+ // Bucket: bucket,
287
+ // MaxKeys: 1,
288
+ // Delimiter: '/',
289
+ // Prefix: prefix,
290
+ // };
291
+ // const data = await this.asyncS3ListObjectsV2(opts);
292
+ // if (data.Contents && data.Contents.length > 0) {
293
+ // const content = data.Contents[0];
294
+ // let k = content.Key;
295
+ // if (k) {
296
+ // const idx = k.lastIndexOf('/');
297
+ // if (idx > 0 && idx < k.length - 1) {
298
+ // k = k.substring(idx + 1);
299
+ // }
300
+ // key = new DbS3Key(k);
301
+ // key.updated = content.LastModified;
302
+ // key.etag = content.ETag;
303
+ // key.size = content.Size;
304
+ // key.storage_class = content.StorageClass;
305
+ // // output_file_path
306
+ // const fResult = await FileUtil.getKeyFile(opts.Bucket, k);
307
+ // if (fResult.ok) {
308
+ // key.output_file_path = fResult.result;
309
+ // }
310
+ // }
311
+ // }
312
+ // } catch (e) {
313
+ // console.error('L98', e);
314
+ // }
315
+ // return key;
316
+ // }
317
+ // async putObject(
318
+ // bucket: string,
319
+ // key: string,
320
+ // file_path: string,
321
+ // ): Promise<string | undefined> {
322
+ // const params: any = {
323
+ // Bucket: bucket,
324
+ // Key: key,
325
+ // };
326
+ // const v = fs.readFileSync(file_path);
327
+ // params.Body = v;
328
+ // return new Promise<string | undefined>((resolve, reject) => {
329
+ // this.s3.putObject(params, (err, data) => {
330
+ // resolve(data.ETag);
331
+ // });
332
+ // });
333
+ // }
334
+ async getResouces(options) {
335
+ if (!this.conRes) {
336
+ return [];
337
+ }
338
+ const dbResources = new Array();
339
+ const dbDatabase = new DbResource_1.DbDatabase('S3');
340
+ dbResources.push(dbDatabase);
341
+ try {
342
+ const buckets = await this.s3Client.send(new client_s3_1.ListBucketsCommand({}));
343
+ if (buckets.Buckets) {
344
+ for (const bucket of buckets.Buckets) {
345
+ const dbBucket = new DbResource_1.DbS3Bucket(bucket.Name, bucket.CreationDate);
346
+ dbDatabase.addChild(dbBucket);
347
+ }
348
+ }
349
+ if (buckets.Owner) {
350
+ const dbOwner = new DbResource_1.DbS3Owner(buckets.Owner.ID, buckets.Owner.DisplayName);
351
+ dbDatabase.addChild(dbOwner);
352
+ }
353
+ else {
354
+ // log.info('Owner nothing.')
355
+ }
356
+ }
357
+ catch (e) {
358
+ console.error(e);
359
+ // reject(e);
360
+ }
361
+ return dbResources;
362
+ }
363
+ async requestSql(sql, options) {
364
+ return new ResultSetDataHolder_1.default([]);
365
+ }
366
+ // async asyncGetSignedUrl(
367
+ // bucket: string,
368
+ // key: string,
369
+ // ex: number,
370
+ // ): Promise<string> {
371
+ // const LOG_PREFIX = `【S3:署名付きURL取得】<Bucket:${bucket}> [Key:${key}]`;
372
+ // const signedUrlExpireSeconds = ex;
373
+ // const url = this.s3.getSignedUrl('getObject', {
374
+ // Bucket: bucket,
375
+ // Key: key,
376
+ // Expires: signedUrlExpireSeconds,
377
+ // });
378
+ // return url;
379
+ // }
380
+ // async asyncGet(bucket: string, key: string): Promise<string> {
381
+ // const LOG_PREFIX = `【S3:取得】<Bucket:${bucket}> [Key:${key}]`;
382
+ // const output_dir_path = await FileUtil.createKeyFolder(bucket, key);
383
+ // return new Promise<string>((resolve, reject) => {
384
+ // const params = {
385
+ // Bucket: bucket,
386
+ // Key: key,
387
+ // };
388
+ // const output_file_path = path.join(output_dir_path, path.basename(key));
389
+ // const file = fs.createWriteStream(output_file_path);
390
+ // this.s3
391
+ // .getObject(params)
392
+ // .createReadStream()
393
+ // .on('end', () => {
394
+ // return resolve(output_file_path);
395
+ // })
396
+ // .on('error', (error) => {
397
+ // return reject(error);
398
+ // })
399
+ // .pipe(file);
400
+ // });
401
+ // }
402
+ async createBucket({ bucket }) {
403
+ await this.s3Client.send(new client_s3_1.CreateBucketCommand({ Bucket: bucket }));
404
+ }
405
+ async getValueByKey({ bucket, key, }) {
406
+ // Get the object from the Amazon S3 bucket. It is returned as a ReadableStream.
407
+ const data = await this.s3Client.send(new client_s3_1.GetObjectCommand({
408
+ Bucket: bucket,
409
+ Key: key,
410
+ }));
411
+ return data.Body.transformToString();
412
+ }
413
+ async putObject({ bucket, key, body, }) {
414
+ await this.s3Client.send(new client_s3_1.PutObjectCommand({
415
+ Bucket: bucket,
416
+ Key: key,
417
+ Body: body,
418
+ }));
419
+ }
420
+ async removeBucket({ bucket }) {
421
+ await this.removeAllObjects({ bucket });
422
+ await this.s3Client.send(new client_s3_1.DeleteBucketCommand({ Bucket: bucket }));
423
+ }
424
+ async removeAllObjects({ bucket }) {
425
+ let truncated = true;
426
+ let pageMarker;
427
+ const bucketParams = { Bucket: bucket };
428
+ while (truncated) {
429
+ const response = await this.s3Client.send(new client_s3_1.ListObjectsCommand(bucketParams));
430
+ // return response; //For unit tests
431
+ for (let i = 0; i < response.Contents.length; i++) {
432
+ const item = response.Contents[i];
433
+ const delR = await this.s3Client.send(new client_s3_1.DeleteObjectCommand({
434
+ Bucket: bucket,
435
+ Key: item.Key,
436
+ }));
437
+ }
438
+ // Log the key of every item in the response to standard output.
439
+ truncated = response.IsTruncated;
440
+ // If truncated is true, assign the key of the last element in the response to the pageMarker variable.
441
+ if (truncated) {
442
+ pageMarker = response.Contents.slice(-1)[0].Key;
443
+ // Assign the pageMarker value to bucketParams so that the next iteration starts from the new pageMarker.
444
+ bucketParams.Marker = pageMarker;
445
+ }
446
+ // At end of the list, response.truncated is false, and the function exits the while loop.
447
+ }
448
+ }
449
+ async closeSub() {
450
+ if (this.s3Client) {
451
+ this.s3Client.destroy();
452
+ }
453
+ return '';
454
+ }
455
+ }
456
+ exports.default = AwsS3Driver;
457
+ //# sourceMappingURL=AwsS3Driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsS3Driver.js","sourceRoot":"","sources":["../../../../src/db/drivers/AwsS3Driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import DBError from '../DBError';
2
+ import { DbConnection, DbResource, ColumnResolver, DbColumn, SchemaAndTableHints, TableRows, Proposal } from '../resource/DbResource';
3
+ import ResultSetDataHolder from '../resource/ResultSetDataHolder';
4
+ export default abstract class BaseDriver {
5
+ isConnected: boolean;
6
+ protected conRes: DbConnection;
7
+ protected sshServer: any;
8
+ protected sshLocalPort?: number;
9
+ constructor(conRes: DbConnection);
10
+ getName(): string;
11
+ getConnectionRes(): DbConnection;
12
+ initBaseStatus(): void;
13
+ isNeedsSsh(): boolean;
14
+ isQuery(sql: string): boolean;
15
+ createColumnResolver(sql?: string): ColumnResolver;
16
+ parseSchemaAndTableHints(sql: string): SchemaAndTableHints;
17
+ getProposals(): Proposal[];
18
+ resolveColumn(column: string, resolver?: ColumnResolver): DbColumn | undefined;
19
+ resolveColumnComment(column: string, resolver?: ColumnResolver): string;
20
+ asyncConnectToSshServer(): Promise<string>;
21
+ asyncConnect(): Promise<string>;
22
+ asyncClose(): Promise<string>;
23
+ abstract connectSub(): Promise<string>;
24
+ abstract closeSub(): Promise<string>;
25
+ abstract getResouces(options: {
26
+ progress_callback?: Function | undefined;
27
+ params?: any;
28
+ }): Promise<Array<DbResource>>;
29
+ abstract test(with_connect: boolean): Promise<string>;
30
+ abstract countTables(tables: SchemaAndTableHints, options: any): Promise<TableRows[]>;
31
+ abstract requestSql(sql: string, options?: RequestSqlOptions): Promise<ResultSetDataHolder>;
32
+ createDBError(message: string, sourceError: any): DBError;
33
+ }
34
+ export interface RequestSqlOptions {
35
+ binds?: string[];
36
+ needs_column_resolve?: boolean;
37
+ progress_callback?: Function;
38
+ max_rows?: number;
39
+ auto_connection?: boolean;
40
+ }