@l-v-yonsama/multi-platform-database-drivers 0.1.9 → 0.1.10
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/README.md +6 -0
- package/built/src/db/drivers/AwsS3Driver.js +122 -421
- package/built/src/db/drivers/AwsS3Driver.js.map +1 -1
- package/built/src/db/drivers/BaseDriver.js +61 -67
- package/built/src/db/drivers/BaseDriver.js.map +1 -1
- package/built/src/db/drivers/MySQLDriver.js +187 -184
- package/built/src/db/drivers/MySQLDriver.js.map +1 -1
- package/built/src/db/drivers/PostgresDriver.js +173 -186
- package/built/src/db/drivers/PostgresDriver.js.map +1 -1
- package/built/src/db/drivers/RedisDriver.js +170 -160
- package/built/src/db/drivers/RedisDriver.js.map +1 -1
- package/built/src/db/resource/DbResource.js +0 -20
- package/built/src/db/resource/DbResource.js.map +1 -1
- package/built/src/db/resource/MultipleResultSetDataHolder.js +0 -1
- package/built/src/db/resource/MultipleResultSetDataHolder.js.map +1 -1
- package/built/src/db/resource/ResourceHelper.js +0 -1
- package/built/src/db/resource/ResourceHelper.js.map +1 -1
- package/built/src/db/resource/ResultSetDataHolder.d.ts +0 -11
- package/built/src/db/resource/ResultSetDataHolder.js +0 -42
- package/built/src/db/resource/ResultSetDataHolder.js.map +1 -1
- package/built/src/db/resource/types/GeneralColumnType.js +0 -20
- package/built/src/db/resource/types/GeneralColumnType.js.map +1 -1
- package/built/src/db/resource/types/MySQLColumnType.js +0 -7
- package/built/src/db/resource/types/MySQLColumnType.js.map +1 -1
- package/built/src/db/resource/types/PostgresColumnType.js +0 -2
- package/built/src/db/resource/types/PostgresColumnType.js.map +1 -1
- package/built/src/service/DBAccessService.js +262 -245
- package/built/src/service/DBAccessService.js.map +1 -1
- package/built/src/service/DBDriverResolver.js +13 -25
- package/built/src/service/DBDriverResolver.js.map +1 -1
- package/built/src/service/SQLService.js +0 -4
- package/built/src/service/SQLService.js.map +1 -1
- package/built/src/service/request/index.d.ts +0 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
5
4
|
const BaseDriver_1 = require("./BaseDriver");
|
|
6
5
|
const DbResource_1 = require("../resource/DbResource");
|
|
7
6
|
const ResultSetDataHolder_1 = require("../resource/ResultSetDataHolder");
|
|
@@ -11,446 +10,148 @@ class AwsS3Driver extends BaseDriver_1.default {
|
|
|
11
10
|
constructor(conRes) {
|
|
12
11
|
super(conRes);
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
this
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
connectSub() {
|
|
14
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
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.dbType === 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
|
+
});
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (this.s3Client) {
|
|
37
|
-
try {
|
|
38
|
-
const a = await this.s3Client.send(new client_s3_1.ListBucketsCommand({}));
|
|
32
|
+
test(with_connect = false) {
|
|
33
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
let errorReason = '';
|
|
35
|
+
if (with_connect) {
|
|
36
|
+
errorReason = yield this.connect();
|
|
39
37
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
if (this.s3Client) {
|
|
39
|
+
try {
|
|
40
|
+
const a = yield this.s3Client.send(new client_s3_1.ListBucketsCommand({}));
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error(e);
|
|
44
|
+
errorReason = e.message;
|
|
45
|
+
}
|
|
43
46
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
if (with_connect) {
|
|
48
|
+
yield this.disconnect();
|
|
49
|
+
}
|
|
50
|
+
return errorReason;
|
|
51
|
+
});
|
|
49
52
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// Key: key,
|
|
55
|
-
// Expires: signedUrlExpireSeconds,
|
|
56
|
-
// });
|
|
57
|
-
// return url;
|
|
58
|
-
// }
|
|
59
|
-
async countTables(tables, options) {
|
|
60
|
-
return new Array();
|
|
53
|
+
countTables(tables, options) {
|
|
54
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
return new Array();
|
|
56
|
+
});
|
|
61
57
|
}
|
|
62
58
|
abortSearch() {
|
|
63
59
|
if (this.finder) {
|
|
64
60
|
this.finder.abort();
|
|
65
61
|
}
|
|
66
62
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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 getInfomationSchemas(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
|
-
}
|
|
63
|
+
getInfomationSchemas(options) {
|
|
64
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
if (!this.conRes) {
|
|
66
|
+
return [];
|
|
348
67
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
68
|
+
const dbResources = new Array();
|
|
69
|
+
const dbDatabase = new DbResource_1.DbDatabase('S3');
|
|
70
|
+
dbResources.push(dbDatabase);
|
|
71
|
+
try {
|
|
72
|
+
const buckets = yield this.s3Client.send(new client_s3_1.ListBucketsCommand({}));
|
|
73
|
+
if (buckets.Buckets) {
|
|
74
|
+
for (const bucket of buckets.Buckets) {
|
|
75
|
+
const dbBucket = new DbResource_1.DbS3Bucket(bucket.Name, bucket.CreationDate);
|
|
76
|
+
dbDatabase.addChild(dbBucket);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (buckets.Owner) {
|
|
80
|
+
const dbOwner = new DbResource_1.DbS3Owner(buckets.Owner.ID, buckets.Owner.DisplayName);
|
|
81
|
+
dbDatabase.addChild(dbOwner);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
}
|
|
352
85
|
}
|
|
353
|
-
|
|
354
|
-
|
|
86
|
+
catch (e) {
|
|
87
|
+
console.error(e);
|
|
355
88
|
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
console.error(e);
|
|
359
|
-
// reject(e);
|
|
360
|
-
}
|
|
361
|
-
return dbResources;
|
|
89
|
+
return dbResources;
|
|
90
|
+
});
|
|
362
91
|
}
|
|
363
|
-
|
|
364
|
-
return
|
|
92
|
+
requestSql(sql, options) {
|
|
93
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
return new ResultSetDataHolder_1.default([]);
|
|
95
|
+
});
|
|
365
96
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
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 }));
|
|
97
|
+
createBucket({ bucket }) {
|
|
98
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
yield this.s3Client.send(new client_s3_1.CreateBucketCommand({ Bucket: bucket }));
|
|
100
|
+
});
|
|
404
101
|
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
102
|
+
getValueByKey({ bucket, key, }) {
|
|
103
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
const data = yield this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
105
|
+
Bucket: bucket,
|
|
106
|
+
Key: key,
|
|
107
|
+
}));
|
|
108
|
+
return data.Body.transformToString();
|
|
109
|
+
});
|
|
412
110
|
}
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
111
|
+
putObject({ bucket, key, body, }) {
|
|
112
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
yield this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
114
|
+
Bucket: bucket,
|
|
115
|
+
Key: key,
|
|
116
|
+
Body: body,
|
|
117
|
+
}));
|
|
118
|
+
});
|
|
419
119
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
120
|
+
removeBucket({ bucket }) {
|
|
121
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
yield this.removeAllObjects({ bucket });
|
|
123
|
+
yield this.s3Client.send(new client_s3_1.DeleteBucketCommand({ Bucket: bucket }));
|
|
124
|
+
});
|
|
423
125
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
// Assign the pageMarker value to bucketParams so that the next iteration starts from the new pageMarker.
|
|
444
|
-
bucketParams.Marker = pageMarker;
|
|
126
|
+
removeAllObjects({ bucket }) {
|
|
127
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
let truncated = true;
|
|
129
|
+
let pageMarker;
|
|
130
|
+
const bucketParams = { Bucket: bucket };
|
|
131
|
+
while (truncated) {
|
|
132
|
+
const response = yield this.s3Client.send(new client_s3_1.ListObjectsCommand(bucketParams));
|
|
133
|
+
for (let i = 0; i < response.Contents.length; i++) {
|
|
134
|
+
const item = response.Contents[i];
|
|
135
|
+
const delR = yield this.s3Client.send(new client_s3_1.DeleteObjectCommand({
|
|
136
|
+
Bucket: bucket,
|
|
137
|
+
Key: item.Key,
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
truncated = response.IsTruncated;
|
|
141
|
+
if (truncated) {
|
|
142
|
+
pageMarker = response.Contents.slice(-1)[0].Key;
|
|
143
|
+
bucketParams.Marker = pageMarker;
|
|
144
|
+
}
|
|
445
145
|
}
|
|
446
|
-
|
|
447
|
-
}
|
|
146
|
+
});
|
|
448
147
|
}
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
this.s3Client
|
|
452
|
-
|
|
453
|
-
|
|
148
|
+
closeSub() {
|
|
149
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
if (this.s3Client) {
|
|
151
|
+
this.s3Client.destroy();
|
|
152
|
+
}
|
|
153
|
+
return '';
|
|
154
|
+
});
|
|
454
155
|
}
|
|
455
156
|
}
|
|
456
157
|
exports.default = AwsS3Driver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwsS3Driver.js","sourceRoot":"","sources":["../../../../src/db/drivers/AwsS3Driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AwsS3Driver.js","sourceRoot":"","sources":["../../../../src/db/drivers/AwsS3Driver.ts"],"names":[],"mappings":"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"}
|