Skip to content

Commit 0574548

Browse files
committed
Merge branch 'edge'
2 parents 1bd8d7b + 4a43d7b commit 0574548

File tree

7 files changed

+661
-662
lines changed

7 files changed

+661
-662
lines changed

Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@ RUN yarn install --omit=dev \
5151
&& chown abc:abc node_modules \
5252
&& rm -rf node_modules/tsx \
5353
&& rm -rf node_modules/typescript \
54-
&& rm -rf node_modules/patch-package
54+
&& rm -rf node_modules/patch-package \
55+
&& rm -rf node_modules/@types \
56+
&& rm -rf node_modules/@esbuild \
57+
&& rm -rf /usr/local/share/.cache \

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"body-parser": "^1.19.0",
3737
"common-tags": "^1.8.2",
3838
"concat-stream": "^2.0.0",
39-
"croner": "^6.0.7",
39+
"croner": "^7.0.5",
4040
"dayjs": "^1.11.8",
4141
"deepmerge": "^4.3.1",
4242
"discord.js": "^14.14.1",

src/common/funcs/processPendingDigests.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import {TautulliRequest} from "../db/models/TautulliRequest.js";
66
import {buildMessages} from "../../discord/builder.js";
77
import {ErrorWithCause} from "pony-cause";
88

9-
export const processPendingDigests = async (digest: DigestData, parentLogger: Logger, id?: string) => {
10-
const digestLogger = childLogger(parentLogger, `Digest ${id ?? digest.slug}`);
9+
export const processPendingDigests = async (digest: DigestData, parentLogger: Logger) => {
1110

1211
const {
1312
slug,
@@ -16,7 +15,7 @@ export const processPendingDigests = async (digest: DigestData, parentLogger: Lo
1615
}
1716
} = digest;
1817

19-
const logger = childLogger(digestLogger, slug);
18+
const logger = childLogger(parentLogger, slug);
2019

2120
let sentEvents = 0;
2221
let sentMessages = 0;

src/scheduler/scheduler.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { childLogger, Logger } from "@foxxmd/logging";
2+
import dayjs from "dayjs";
23
import {CronJob, SimpleIntervalJob, ToadScheduler} from "toad-scheduler";
34
import {createHeartbeatTask} from "./tasks/heartbeatTask.js";
45
import {OperatorConfig} from "../common/infrastructure/OperatorConfig.js";
56
import {createProcessPendingDigestsTask} from "./tasks/createProcessPendingDigestsTask.js";
6-
import {mergeArr} from "../utils/index.js";
7+
import {Cron} from 'croner';
78

89
export const initScheduler = (config: OperatorConfig, parentLogger: Logger) => {
910
const scheduler = new ToadScheduler()
@@ -17,11 +18,16 @@ export const initScheduler = (config: OperatorConfig, parentLogger: Logger) => {
1718
for (const digest of config.digests) {
1819
const crons = Array.isArray(digest.cron) ? digest.cron : [digest.cron];
1920
for(const cron of crons) {
20-
scheduler.addCronJob(new CronJob({
21-
cronExpression: cron,
22-
},
23-
createProcessPendingDigestsTask(`${digest.name !== undefined ? `${digest.name} ` : ''}${cron}`, digest, parentLogger)));
24-
logger.info(`Added Digest ${digest.slug} to run ${digest.cron}`);
21+
try {
22+
const nextCron = Cron(cron).nextRun();
23+
scheduler.addCronJob(new CronJob({
24+
cronExpression: cron,
25+
},
26+
createProcessPendingDigestsTask(`${digest.name !== undefined ? `${digest.name} ` : ''}${cron}`, digest, parentLogger, cron)));
27+
logger.info(`Digest ${digest.slug} started with CRON ${cron.padEnd(16, ' ')} -> Next run at ${dayjs(nextCron).format()}`);
28+
} catch (e) {
29+
logger.error(new Error(`Failed to create digest for cron ${cron}`, {cause: e}))
30+
}
2531
}
2632
}
2733

src/scheduler/tasks/createProcessPendingDigestsTask.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
import { childLogger, Logger } from "@foxxmd/logging";
2+
import dayjs from "dayjs";
23
import {AsyncTask} from "toad-scheduler";
34
import {PromisePool} from "@supercharge/promise-pool";
5+
import {Cron} from 'croner';
46
import {DigestData} from "../../common/infrastructure/OperatorConfig.js";
57
import {processPendingDigests} from "../../common/funcs/processPendingDigests.js";
68

7-
export const createProcessPendingDigestsTask = (id: string, digest: DigestData, parentLogger: Logger) => {
8-
const digestLogger = childLogger(parentLogger, `Digest ${id}`);
9+
export const createProcessPendingDigestsTask = (id: string, digest: DigestData, parentLogger: Logger, cron?: string) => {
10+
const digestLogger = childLogger(parentLogger, `Cron ${id}`);
911
return new AsyncTask(
10-
`Digest - ${id}`,
12+
`Digest - ${id} ${digest.slug}`,
1113
(): Promise<any> => {
1214
return PromisePool
1315
.withConcurrency(1)
1416
.for([digest])
1517
.process(async (digest: DigestData) => {
16-
await processPendingDigests(digest, parentLogger, id);
18+
await processPendingDigests(digest, digestLogger);
1719
}).then(({results, errors}) => {
1820
if (errors.length > 0) {
1921
digestLogger.error(`Encountered errors!`);
2022
for (const err of errors) {
2123
digestLogger.error(err);
2224
}
23-
} else {
24-
//digestLogger.info(`TOTAL: Sent ${results.reduce((acc, curr) => acc += curr.sentEmbeds, 0)} embeds in ${results.reduce((acc, curr) => acc += curr.sentMessages, 0)} messages`);
25+
}
26+
if(cron !== undefined) {
27+
digestLogger.info(`Next Run at ${dayjs(Cron(cron).nextRun()).format()}`);
2528
}
2629
});
2730
},

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"resolveJsonModule": true,
55
"emitDecoratorMetadata": true,
66
"experimentalDecorators": true,
7-
"lib": ["es2020", "dom"],
7+
"lib": ["ESNext", "dom"],
88
"module": "commonjs",
99
"target": "es2020",
1010
"esModuleInterop": true,

0 commit comments

Comments
 (0)