pg-mvc-service 2.0.23 → 2.0.24
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/index.d.ts +3 -0
- package/package.json +2 -1
- package/src/cron/BaseCron.ts +37 -0
- package/src/cron/CronExecuter.ts +34 -0
- package/src/cron/TimeType.ts +25 -0
- package/src/index.ts +5 -1
package/index.d.ts
CHANGED
|
@@ -22,6 +22,9 @@ export { TableModel } from "./src/models/TableModel";
|
|
|
22
22
|
|
|
23
23
|
export { TColumnAttribute, TColumnType, TColumnArrayType, TColumn, TColumnDetail, TOperator, TColumnInfo, TQuery, TSelectExpression, TAggregateFuncType, TCondition, TNestedCondition, TSortKeyword, TKeyFormat } from './src/models/Type';
|
|
24
24
|
|
|
25
|
+
export { BaseCron } from "./src/cron/BaseCron";
|
|
26
|
+
export { runCron } from "./src/cron/CronExecuter";
|
|
27
|
+
|
|
25
28
|
declare module 'pg-mvc-service' {
|
|
26
29
|
export class Service {
|
|
27
30
|
protected readonly method: MethodType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-mvc-service",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.24",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/n-daira/npm-pack_mvc-service#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"@types/express": "5.0.1",
|
|
31
31
|
"axios": "1.10.0",
|
|
32
32
|
"crypto": "1.0.1",
|
|
33
|
+
"node-cron": "4.2.1",
|
|
33
34
|
"pdf-lib": "1.17.1",
|
|
34
35
|
"sharp": "0.34.1",
|
|
35
36
|
"type-utils-n-daira": "1.0.11"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DateType, DayType, HourType, MinuteSecondType, MonthType } from "./TimeType";
|
|
2
|
+
|
|
3
|
+
export class BaseCron {
|
|
4
|
+
|
|
5
|
+
// **********************************************************************
|
|
6
|
+
// こちらのメソッド、プロパティを各サブクラスで設定してください
|
|
7
|
+
// **********************************************************************
|
|
8
|
+
protected cronCode: string = '';
|
|
9
|
+
protected minute: MinuteSecondType | '*' = '*';
|
|
10
|
+
protected hour: HourType | '*' = '*';
|
|
11
|
+
protected date: DateType | '*' = '*';
|
|
12
|
+
protected month: MonthType | '*' = '*';
|
|
13
|
+
protected day: DayType | '*' = '*';
|
|
14
|
+
public async run() { }
|
|
15
|
+
|
|
16
|
+
// **********************************************************************
|
|
17
|
+
// ベースクラスで設定
|
|
18
|
+
// **********************************************************************
|
|
19
|
+
get CronSchedule(): string {
|
|
20
|
+
let schedule = '';
|
|
21
|
+
schedule += this.minute.toString() + ' ';
|
|
22
|
+
schedule += this.hour.toString() + ' ';
|
|
23
|
+
schedule += this.date.toString() + ' ';
|
|
24
|
+
schedule += this.month.toString() + ' ';
|
|
25
|
+
schedule += this.day.toString();
|
|
26
|
+
return schedule;
|
|
27
|
+
}
|
|
28
|
+
get CronCode(): string { return this.cronCode; }
|
|
29
|
+
|
|
30
|
+
public async setUp() {
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public async tearDown() {
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const cron = require('node-cron');
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { BaseCron } from "./BaseCron";
|
|
5
|
+
|
|
6
|
+
export const runCron = async (dir: string, logCallback?: (ex: Error) => Promise<void>) => {
|
|
7
|
+
const files = fs.readdirSync(dir);
|
|
8
|
+
for (let file of files) {
|
|
9
|
+
if (['BaseCron.ts'].includes(file)) {
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const filePath = path.join(dir, file);
|
|
14
|
+
const module = await import(`./${filePath.replace('src/', '').replace('.ts', '')}`);
|
|
15
|
+
const cronClass = module.default;
|
|
16
|
+
const cronInstance: BaseCron = new cronClass();
|
|
17
|
+
|
|
18
|
+
cron.schedule(cronInstance.CronSchedule, async () => {
|
|
19
|
+
try {
|
|
20
|
+
await cronInstance.setUp();
|
|
21
|
+
await cronInstance.run();
|
|
22
|
+
} catch (ex: unknown) {
|
|
23
|
+
if (logCallback !== undefined && ex instanceof Error) {
|
|
24
|
+
await logCallback(ex).
|
|
25
|
+
catch(() => {
|
|
26
|
+
// ログ送信時にエラーになっても握りつぶす
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
} finally {
|
|
30
|
+
await cronInstance.tearDown();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type DayType =
|
|
2
|
+
1 | 2 | 3 | 4 | 5 | 6 | 7
|
|
3
|
+
|
|
4
|
+
export type MonthType =
|
|
5
|
+
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
|
6
|
+
10 | 11 | 12
|
|
7
|
+
|
|
8
|
+
export type DateType =
|
|
9
|
+
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
|
10
|
+
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
|
11
|
+
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
|
|
12
|
+
30 | 31
|
|
13
|
+
|
|
14
|
+
export type HourType =
|
|
15
|
+
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
|
16
|
+
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
|
17
|
+
20 | 21 | 22 | 23
|
|
18
|
+
|
|
19
|
+
export type MinuteSecondType =
|
|
20
|
+
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
|
21
|
+
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
|
22
|
+
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
|
|
23
|
+
30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
|
|
24
|
+
40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
|
|
25
|
+
50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59
|
package/src/index.ts
CHANGED
|
@@ -15,4 +15,8 @@ export { TableModel } from './models/TableModel';
|
|
|
15
15
|
export { createTableDoc } from './models/TableDoc';
|
|
16
16
|
export { MigrateTable } from './models/MigrateTable';
|
|
17
17
|
export { MigrateDatabase } from './models/MigrateDatabase';
|
|
18
|
-
export { migrate, rollback } from './models/MigrateRollback';
|
|
18
|
+
export { migrate, rollback } from './models/MigrateRollback';
|
|
19
|
+
|
|
20
|
+
// cron
|
|
21
|
+
export { BaseCron } from './cron/BaseCron';
|
|
22
|
+
export { runCron } from './cron/CronExecuter';
|