@book000/twitterts 0.66.4 → 0.68.0
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/dist/generate-types.js +0 -4
- package/dist/generate-types.js.map +1 -1
- package/dist/migrate-saved-response.js +23 -17
- package/dist/migrate-saved-response.js.map +1 -1
- package/dist/saving-responses/index.d.ts +32 -18
- package/dist/saving-responses/index.d.ts.map +1 -1
- package/dist/saving-responses/index.js +173 -154
- package/dist/saving-responses/index.js.map +1 -1
- package/dist/scraper.d.ts.map +1 -1
- package/dist/scraper.js +1 -8
- package/dist/scraper.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -6
- package/dist/saving-responses/response-entity.d.ts +0 -16
- package/dist/saving-responses/response-entity.d.ts.map +0 -1
- package/dist/saving-responses/response-entity.js +0 -107
- package/dist/saving-responses/response-entity.js.map +0 -1
|
@@ -4,17 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ResponseDatabase = void 0;
|
|
7
|
-
const typeorm_1 = require("typeorm");
|
|
8
|
-
const typeorm_naming_strategies_1 = require("typeorm-naming-strategies");
|
|
9
|
-
const response_entity_1 = require("./response-entity");
|
|
10
7
|
const exceptions_1 = require("../models/exceptions");
|
|
11
8
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
9
|
+
const promise_1 = require("mysql2/promise");
|
|
10
|
+
const ulid_1 = require("ulid");
|
|
12
11
|
/**
|
|
13
12
|
* レスポンスを保存するデータベース
|
|
14
13
|
*/
|
|
15
14
|
class ResponseDatabase {
|
|
16
15
|
constructor(options = {}) {
|
|
17
16
|
this.partitions = [];
|
|
17
|
+
this.initialized = false;
|
|
18
18
|
const configuration = {
|
|
19
19
|
DB_HOSTNAME: options.hostname ?? process.env.RESPONSE_DB_HOSTNAME,
|
|
20
20
|
DB_PORT: options.port ?? process.env.RESPONSE_DB_PORT,
|
|
@@ -25,22 +25,14 @@ class ResponseDatabase {
|
|
|
25
25
|
// DB_PORTがintパースできない場合はエラー
|
|
26
26
|
// DB_PORTがundefinedの場合はデフォルトポートを使用する
|
|
27
27
|
const port = this.parsePort(configuration.DB_PORT);
|
|
28
|
-
this.
|
|
29
|
-
type: 'mysql',
|
|
28
|
+
this.pool = (0, promise_1.createPool)({
|
|
30
29
|
host: configuration.DB_HOSTNAME,
|
|
31
30
|
port,
|
|
32
|
-
|
|
31
|
+
user: configuration.DB_USERNAME,
|
|
33
32
|
password: configuration.DB_PASSWORD,
|
|
34
33
|
database: configuration.DB_DATABASE,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
namingStrategy: new typeorm_naming_strategies_1.SnakeNamingStrategy(),
|
|
38
|
-
entities: [response_entity_1.DBResponse],
|
|
39
|
-
subscribers: [],
|
|
40
|
-
migrations: [],
|
|
41
|
-
timezone: '+09:00',
|
|
42
|
-
supportBigNumbers: true,
|
|
43
|
-
bigNumberStrings: true,
|
|
34
|
+
connectionLimit: 1,
|
|
35
|
+
namedPlaceholders: true,
|
|
44
36
|
});
|
|
45
37
|
}
|
|
46
38
|
/**
|
|
@@ -49,48 +41,85 @@ class ResponseDatabase {
|
|
|
49
41
|
* @returns 初期化に成功したかどうか
|
|
50
42
|
*/
|
|
51
43
|
async init() {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
44
|
+
const tableName = 'responses';
|
|
45
|
+
const createTableSql = 'CREATE TABLE `' +
|
|
46
|
+
tableName +
|
|
47
|
+
'` (' +
|
|
48
|
+
" `id` char(36) NOT NULL COMMENT 'ID'," +
|
|
49
|
+
" `endpoint_type` varchar(10) NOT NULL COMMENT 'エンドポイントの種別'," +
|
|
50
|
+
" `method` varchar(10) NOT NULL COMMENT 'エンドポイントのメソッド'," +
|
|
51
|
+
" `endpoint` varchar(255) NOT NULL COMMENT 'エンドポイントの名前'," +
|
|
52
|
+
" `url` text DEFAULT NULL COMMENT 'リクエストURL'," +
|
|
53
|
+
" `url_hash` varchar(255) NOT NULL COMMENT 'リクエストURLのハッシュ値'," +
|
|
54
|
+
" `request_headers` longtext DEFAULT NULL COMMENT 'リクエストヘッダー'," +
|
|
55
|
+
" `request_body` longtext DEFAULT NULL COMMENT 'リクエストボディ'," +
|
|
56
|
+
" `response_type` varchar(10) NOT NULL COMMENT 'レスポンスの種別'," +
|
|
57
|
+
" `status_code` int(11) NOT NULL COMMENT 'レスポンスのステータスコード'," +
|
|
58
|
+
" `response_headers` longtext DEFAULT NULL COMMENT 'レスポンスヘッダー'," +
|
|
59
|
+
" `response_body` longtext NOT NULL COMMENT 'レスポンスボディ'," +
|
|
60
|
+
" `created_at` datetime(3) NOT NULL COMMENT 'データ登録日時' DEFAULT CURRENT_TIMESTAMP(3)," +
|
|
61
|
+
' PRIMARY KEY (`created_at`),' +
|
|
62
|
+
' UNIQUE KEY `unique_response` (`endpoint_type`,`method`,`endpoint`,`url_hash`,`created_at`),' +
|
|
63
|
+
' KEY `idx_id_createdat` (`id`,`created_at`),' +
|
|
64
|
+
' KEY `idx_endpoint_method_status` (`endpoint_type`,`method`,`endpoint`,`status_code`)' +
|
|
65
|
+
') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci';
|
|
66
|
+
// テーブルが存在しない場合はテーブルを作成する
|
|
67
|
+
const [tables] = await this.pool.query('SELECT table_name FROM information_schema.tables WHERE table_name = :tableName', { tableName });
|
|
68
|
+
await (tables.length === 0
|
|
69
|
+
? this.pool.query(createTableSql)
|
|
70
|
+
: this.migrateTable());
|
|
71
|
+
this.initialized = true;
|
|
72
|
+
// 現在のパーティションを取得する
|
|
73
|
+
this.partitions = await this.fetchPartitions();
|
|
74
|
+
// パーティションの初期作成 (パーティションがひとつも設定されていない場合)
|
|
75
|
+
if (this.partitions.length === 0) {
|
|
76
|
+
await this.initPartition();
|
|
63
77
|
}
|
|
78
|
+
return true;
|
|
64
79
|
}
|
|
65
80
|
/**
|
|
66
|
-
*
|
|
81
|
+
* テーブルをマイグレーションする
|
|
67
82
|
*/
|
|
68
|
-
async
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
async migrateTable() {
|
|
84
|
+
// プライマリキーがid, created_atではない場合は削除する
|
|
85
|
+
const [columns] = await this.pool.query('SHOW COLUMNS FROM responses');
|
|
86
|
+
const isPrimaryKeyCreatedAt = columns.some((column) => column.Field === 'created_at' &&
|
|
87
|
+
column.Key === 'PRI' &&
|
|
88
|
+
column.Extra === '');
|
|
89
|
+
if (!isPrimaryKeyCreatedAt) {
|
|
90
|
+
await this.pool.query('ALTER TABLE responses DROP PRIMARY KEY');
|
|
71
91
|
}
|
|
72
|
-
|
|
73
|
-
|
|
92
|
+
// id列がない場合は追加する
|
|
93
|
+
const [idColumn] = await this.pool.query('SHOW COLUMNS FROM responses WHERE Field = "id"');
|
|
94
|
+
if (idColumn.length === 0) {
|
|
95
|
+
await this.pool.query('ALTER TABLE responses ADD COLUMN `id` CHAR(36) NULL');
|
|
96
|
+
// すべてのレコードにレコードごとで一意のIDを付与する
|
|
97
|
+
const [rows] = await this.pool.query('SELECT * FROM responses');
|
|
98
|
+
for (const row of rows) {
|
|
99
|
+
await this.pool.query('UPDATE responses SET id = :id WHERE created_at = :createdAt', {
|
|
100
|
+
id: (0, ulid_1.ulid)(),
|
|
101
|
+
createdAt: row.createdAt,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
await this.pool.query('ALTER TABLE responses MODIFY COLUMN `id` CHAR(36) NOT NULL');
|
|
74
105
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
* データソーススキーマを同期する
|
|
79
|
-
*/
|
|
80
|
-
async sync() {
|
|
81
|
-
if (!this.dataSource.isInitialized) {
|
|
82
|
-
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
106
|
+
// プライマリキーを付けなおす
|
|
107
|
+
if (!isPrimaryKeyCreatedAt) {
|
|
108
|
+
await this.pool.query('ALTER TABLE responses ADD PRIMARY KEY (`created_at`)');
|
|
83
109
|
}
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
await this.
|
|
110
|
+
// ユニークキーがない場合は追加する
|
|
111
|
+
const [uniqueKeyResponse] = await this.pool.query('SHOW INDEX FROM responses WHERE Key_name = "unique_response"');
|
|
112
|
+
if (uniqueKeyResponse.length === 0) {
|
|
113
|
+
await this.pool.query('ALTER TABLE responses ADD UNIQUE KEY `unique_response` (`endpoint_type`,`method`,`endpoint`,`url_hash`,`created_at`)');
|
|
88
114
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
115
|
+
const [uniqueKeyidCreatedAt] = await this.pool.query('SHOW INDEX FROM responses WHERE Key_name = "idx_id_createdat"');
|
|
116
|
+
if (uniqueKeyidCreatedAt.length === 0) {
|
|
117
|
+
await this.pool.query('ALTER TABLE responses ADD UNIQUE KEY `idx_id_createdat` (`id`,`created_at`)');
|
|
118
|
+
}
|
|
119
|
+
// idx_から始まるインデックスは、idx_endpoint_method_statusかidx_id_createdatのみとする。それ以外は削除する
|
|
120
|
+
const [indexes] = await this.pool.query('SHOW INDEX FROM responses WHERE Key_name LIKE "idx_%" AND Key_name NOT IN ("idx_endpoint_method_status", "idx_id_createdat")');
|
|
121
|
+
for (const index of indexes) {
|
|
122
|
+
await this.pool.query(`ALTER TABLE responses DROP INDEX ${index.Key_name}`);
|
|
94
123
|
}
|
|
95
124
|
}
|
|
96
125
|
/**
|
|
@@ -100,32 +129,42 @@ class ResponseDatabase {
|
|
|
100
129
|
* @returns 追加されたレスポンス
|
|
101
130
|
*/
|
|
102
131
|
async addResponse(options) {
|
|
103
|
-
if (!this.
|
|
132
|
+
if (!this.initialized) {
|
|
104
133
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
105
134
|
}
|
|
106
135
|
const now = new Date();
|
|
107
136
|
await this.addPartition(now);
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
137
|
+
const insertSql = 'INSERT IGNORE INTO responses SET ' +
|
|
138
|
+
'id = :id, ' +
|
|
139
|
+
'endpoint_type = :endpointType, ' +
|
|
140
|
+
'method = :method, ' +
|
|
141
|
+
'endpoint = :endpoint, ' +
|
|
142
|
+
'url = :url, ' +
|
|
143
|
+
'url_hash = :urlHash, ' +
|
|
144
|
+
'request_headers = :requestHeaders, ' +
|
|
145
|
+
'request_body = :requestBody, ' +
|
|
146
|
+
'response_type = :responseType, ' +
|
|
147
|
+
'status_code = :statusCode, ' +
|
|
148
|
+
'response_headers = :responseHeaders, ' +
|
|
149
|
+
'response_body = :responseBody, ' +
|
|
150
|
+
'created_at = :createdAt';
|
|
151
|
+
await this.pool.query(insertSql, {
|
|
152
|
+
id: (0, ulid_1.ulid)(),
|
|
153
|
+
endpointType: options.endpointType,
|
|
154
|
+
method: options.method,
|
|
155
|
+
endpoint: options.endpoint,
|
|
156
|
+
url: options.url,
|
|
157
|
+
urlHash: node_crypto_1.default
|
|
158
|
+
.createHash('sha256')
|
|
159
|
+
.update(options.url ?? '')
|
|
160
|
+
.digest('hex'),
|
|
161
|
+
requestHeaders: options.requestHeaders,
|
|
162
|
+
requestBody: options.requestBody,
|
|
163
|
+
responseType: options.responseType,
|
|
164
|
+
statusCode: options.statusCode,
|
|
165
|
+
responseHeaders: options.responseHeaders,
|
|
166
|
+
responseBody: options.responseBody,
|
|
167
|
+
createdAt: now,
|
|
129
168
|
});
|
|
130
169
|
}
|
|
131
170
|
/**
|
|
@@ -137,46 +176,53 @@ class ResponseDatabase {
|
|
|
137
176
|
* @returns レスポンスの配列
|
|
138
177
|
*/
|
|
139
178
|
async getResponses(endpoint, rangeOptions) {
|
|
140
|
-
if (!this.
|
|
179
|
+
if (!this.initialized) {
|
|
141
180
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
142
181
|
}
|
|
143
182
|
const options = rangeOptions ?? {};
|
|
144
183
|
const page = options.page;
|
|
145
184
|
const limit = options.limit;
|
|
146
185
|
// ResponseEndPointWithCountで来る場合があるので、ResponseEndPointに変換する
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
endpoint: v.endpoint,
|
|
154
|
-
statusCode: v.statusCode,
|
|
155
|
-
}))
|
|
156
|
-
: [
|
|
157
|
-
{
|
|
158
|
-
endpointType: endpoint.endpointType,
|
|
159
|
-
method: endpoint.method,
|
|
160
|
-
endpoint: endpoint.endpoint,
|
|
161
|
-
statusCode: endpoint.statusCode,
|
|
162
|
-
},
|
|
163
|
-
]
|
|
164
|
-
: {};
|
|
186
|
+
const endpointValue = {
|
|
187
|
+
endpointType: endpoint.endpointType,
|
|
188
|
+
method: endpoint.method,
|
|
189
|
+
endpoint: endpoint.endpoint,
|
|
190
|
+
statusCode: endpoint.statusCode,
|
|
191
|
+
};
|
|
165
192
|
if (page === undefined || limit === undefined) {
|
|
166
|
-
|
|
193
|
+
const [results] = await this.pool.query(`SELECT
|
|
194
|
+
endpoint_type AS endpointType,
|
|
195
|
+
method,
|
|
196
|
+
endpoint,
|
|
197
|
+
url,
|
|
198
|
+
url_hash AS urlHash,
|
|
199
|
+
request_headers AS requestHeaders,
|
|
200
|
+
request_body AS requestBody,
|
|
201
|
+
response_type AS responseType,
|
|
202
|
+
status_code AS statusCode,
|
|
203
|
+
response_headers AS responseHeaders,
|
|
204
|
+
response_body AS responseBody,
|
|
205
|
+
created_at AS createdAt
|
|
206
|
+
FROM
|
|
207
|
+
responses
|
|
208
|
+
WHERE
|
|
209
|
+
endpoint_type = :endpointType
|
|
210
|
+
AND method = :method
|
|
211
|
+
AND endpoint = :endpoint
|
|
212
|
+
AND status_code = :statusCode
|
|
213
|
+
ORDER BY
|
|
214
|
+
created_at DESC`, endpointValue);
|
|
215
|
+
return results;
|
|
167
216
|
}
|
|
168
217
|
if (page <= 0 || limit <= 0) {
|
|
169
218
|
throw new exceptions_1.TwitterTsError(`Responses database range is invalid (page: ${page}, limit: ${limit})`);
|
|
170
219
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
order: { createdAt: 'DESC' },
|
|
176
|
-
skip: (page - 1) * limit,
|
|
177
|
-
take: limit,
|
|
178
|
-
});
|
|
220
|
+
const [results] = await this.pool.query('SELECT * FROM responses WHERE endpoint_type = :endpointType AND method = :method AND endpoint = :endpoint AND status_code = :statusCode ORDER BY created_at DESC LIMIT :offset, :limit', {
|
|
221
|
+
...endpointValue,
|
|
222
|
+
offset: (page - 1) * limit,
|
|
223
|
+
limit,
|
|
179
224
|
});
|
|
225
|
+
return results;
|
|
180
226
|
}
|
|
181
227
|
/**
|
|
182
228
|
* レスポンスの数を取得する
|
|
@@ -185,54 +231,28 @@ class ResponseDatabase {
|
|
|
185
231
|
* @returns レスポンスの数
|
|
186
232
|
*/
|
|
187
233
|
async getResponseCount(endpoint) {
|
|
188
|
-
if (!this.
|
|
234
|
+
if (!this.initialized) {
|
|
189
235
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
190
236
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
: [
|
|
200
|
-
{
|
|
201
|
-
endpointType: endpoint.endpointType,
|
|
202
|
-
method: endpoint.method,
|
|
203
|
-
endpoint: endpoint.endpoint,
|
|
204
|
-
statusCode: endpoint.statusCode,
|
|
205
|
-
},
|
|
206
|
-
]
|
|
207
|
-
: {};
|
|
208
|
-
return await this.dataSource.transaction('READ COMMITTED', async (manager) => {
|
|
209
|
-
return await manager.count(response_entity_1.DBResponse, { where: endpoints });
|
|
210
|
-
});
|
|
237
|
+
const endpointValue = {
|
|
238
|
+
endpointType: endpoint.endpointType,
|
|
239
|
+
method: endpoint.method,
|
|
240
|
+
endpoint: endpoint.endpoint,
|
|
241
|
+
statusCode: endpoint.statusCode,
|
|
242
|
+
};
|
|
243
|
+
const [results] = await this.pool.query('SELECT COUNT(id) AS count FROM responses WHERE endpoint_type = :endpointType AND method = :method AND endpoint = :endpoint AND status_code = :statusCode', endpointValue);
|
|
244
|
+
return results[0].count;
|
|
211
245
|
}
|
|
212
246
|
/**
|
|
213
247
|
* エンドポイントを取得する
|
|
214
248
|
*/
|
|
215
249
|
async getEndpoints() {
|
|
216
|
-
if (!this.
|
|
250
|
+
if (!this.initialized) {
|
|
217
251
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
218
252
|
}
|
|
219
253
|
// endpointType, endpointの組み合わせを取得する
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
.createQueryBuilder(response_entity_1.DBResponse, 'response')
|
|
223
|
-
.where({
|
|
224
|
-
responseType: 'JSON',
|
|
225
|
-
})
|
|
226
|
-
.groupBy('endpoint_type, method, endpoint, status_code')
|
|
227
|
-
.select([
|
|
228
|
-
'endpoint_type AS endpointType',
|
|
229
|
-
'method',
|
|
230
|
-
'endpoint',
|
|
231
|
-
'status_code AS statusCode',
|
|
232
|
-
'COUNT(*) AS count',
|
|
233
|
-
])
|
|
234
|
-
.getRawMany();
|
|
235
|
-
});
|
|
254
|
+
const [results] = await this.pool.query('SELECT endpoint_type, method, endpoint, status_code, COUNT(id) AS count FROM responses GROUP BY endpoint_type, method, endpoint, status_code');
|
|
255
|
+
return results;
|
|
236
256
|
}
|
|
237
257
|
/**
|
|
238
258
|
* パーティションを取得する
|
|
@@ -240,16 +260,15 @@ class ResponseDatabase {
|
|
|
240
260
|
* @returns パーティションの配列
|
|
241
261
|
*/
|
|
242
262
|
async fetchPartitions() {
|
|
243
|
-
if (!this.
|
|
263
|
+
if (!this.initialized) {
|
|
244
264
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
245
265
|
}
|
|
246
|
-
const results = await this.
|
|
247
|
-
|
|
266
|
+
const [results] = await this.pool.query('SELECT PARTITION_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = "responses"');
|
|
267
|
+
return results
|
|
248
268
|
.map((v) => {
|
|
249
269
|
return v.PARTITION_NAME;
|
|
250
270
|
})
|
|
251
271
|
.filter((v) => v !== null);
|
|
252
|
-
return partitions;
|
|
253
272
|
}
|
|
254
273
|
/**
|
|
255
274
|
* 日付パーティションを追加する
|
|
@@ -257,7 +276,7 @@ class ResponseDatabase {
|
|
|
257
276
|
* @param date 日付
|
|
258
277
|
*/
|
|
259
278
|
async addPartition(date) {
|
|
260
|
-
if (!this.
|
|
279
|
+
if (!this.initialized) {
|
|
261
280
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
262
281
|
}
|
|
263
282
|
// pYYYYMMの形式でパーティションを作成する
|
|
@@ -267,7 +286,7 @@ class ResponseDatabase {
|
|
|
267
286
|
}
|
|
268
287
|
// 翌月の1日の日付を取得する
|
|
269
288
|
const nextMonth = new Date(date.getFullYear(), date.getMonth() + 1, 1);
|
|
270
|
-
await this.
|
|
289
|
+
await this.pool
|
|
271
290
|
.query(`ALTER TABLE responses REORGANIZE PARTITION pmax INTO (PARTITION ${partitionName} VALUES LESS THAN (` +
|
|
272
291
|
`TO_DAYS('${nextMonth.toISOString().slice(0, 10)}')` +
|
|
273
292
|
`), PARTITION pmax VALUES LESS THAN MAXVALUE)`)
|
|
@@ -283,14 +302,14 @@ class ResponseDatabase {
|
|
|
283
302
|
* 日付パーティションを初期化する
|
|
284
303
|
*/
|
|
285
304
|
async initPartition() {
|
|
286
|
-
if (!this.
|
|
305
|
+
if (!this.initialized) {
|
|
287
306
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
288
307
|
}
|
|
289
308
|
const partitionName = 'pmax';
|
|
290
309
|
if (this.partitions.includes(partitionName)) {
|
|
291
310
|
return;
|
|
292
311
|
}
|
|
293
|
-
await this.
|
|
312
|
+
await this.pool.query(`ALTER TABLE responses PARTITION BY RANGE (TO_DAYS(created_at)) (PARTITION ${partitionName} VALUES LESS THAN MAXVALUE)`);
|
|
294
313
|
this.partitions.push(partitionName);
|
|
295
314
|
}
|
|
296
315
|
/**
|
|
@@ -299,26 +318,26 @@ class ResponseDatabase {
|
|
|
299
318
|
* @param partitionName パーティション名
|
|
300
319
|
*/
|
|
301
320
|
async dropPartition(partitionName) {
|
|
302
|
-
if (!this.
|
|
321
|
+
if (!this.initialized) {
|
|
303
322
|
throw new exceptions_1.TwitterTsError('Responses database is not initialized');
|
|
304
323
|
}
|
|
305
324
|
if (!this.partitions.includes(partitionName)) {
|
|
306
325
|
return;
|
|
307
326
|
}
|
|
308
|
-
await this.
|
|
327
|
+
await this.pool.query(`ALTER TABLE responses DROP PARTITION ${partitionName}`);
|
|
309
328
|
this.partitions = this.partitions.filter((v) => v !== partitionName);
|
|
310
329
|
}
|
|
311
330
|
/**
|
|
312
331
|
* データソースをクローズする
|
|
313
332
|
*/
|
|
314
333
|
async close() {
|
|
315
|
-
if (!this.
|
|
334
|
+
if (!this.initialized) {
|
|
316
335
|
return;
|
|
317
336
|
}
|
|
318
|
-
await this.
|
|
337
|
+
await this.pool.end();
|
|
319
338
|
}
|
|
320
339
|
isInitialized() {
|
|
321
|
-
return this.
|
|
340
|
+
return this.initialized;
|
|
322
341
|
}
|
|
323
342
|
getPartitions() {
|
|
324
343
|
return this.partitions;
|
|
@@ -329,12 +348,12 @@ class ResponseDatabase {
|
|
|
329
348
|
return new Date(year, month - 1);
|
|
330
349
|
}
|
|
331
350
|
/**
|
|
332
|
-
*
|
|
351
|
+
* プールを取得する
|
|
333
352
|
*
|
|
334
|
-
* @returns
|
|
353
|
+
* @returns プール
|
|
335
354
|
*/
|
|
336
|
-
|
|
337
|
-
return this.
|
|
355
|
+
getPool() {
|
|
356
|
+
return this.pool;
|
|
338
357
|
}
|
|
339
358
|
/**
|
|
340
359
|
* 環境変数で指定されたデータベースのポートをパースする。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/saving-responses/index.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/saving-responses/index.ts"],"names":[],"mappings":"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"}
|
package/dist/scraper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../src/scraper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../src/scraper.ts"],"names":[],"mappings":"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"}
|
package/dist/scraper.js
CHANGED
|
@@ -675,14 +675,7 @@ class TwitterScraper {
|
|
|
675
675
|
return;
|
|
676
676
|
}
|
|
677
677
|
saving_responses_1.ResponseDatabase.printDebug('Initialize responses database');
|
|
678
|
-
|
|
679
|
-
if (!result) {
|
|
680
|
-
return;
|
|
681
|
-
}
|
|
682
|
-
saving_responses_1.ResponseDatabase.printDebug('Migrate responses database');
|
|
683
|
-
await this.responseDatabase.migrate();
|
|
684
|
-
saving_responses_1.ResponseDatabase.printDebug('Sync responses database');
|
|
685
|
-
await this.responseDatabase.sync();
|
|
678
|
+
await this.responseDatabase.init();
|
|
686
679
|
}
|
|
687
680
|
/**
|
|
688
681
|
* 指定したセレクタの要素を取得します。
|