Skip to content

Commit

Permalink
add script to trigger resync old conventions to PE
Browse files Browse the repository at this point in the history
  • Loading branch information
celineung committed Jun 26, 2023
1 parent 36e4970 commit 7cba2f8
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
1 change: 1 addition & 0 deletions back/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"trigger-sending-emails-with-assessment-creation-link": "ts-node src/adapters/primary/scripts/triggerSendingEmailsWithAssessmentCreationLink.ts",
"trigger-refresh-materialized-views": "ts-node src/adapters/primary/scripts/triggerRefreshMaterializedViews.ts",
"trigger-convention-reminder": "ts-node src/adapters/primary/scripts/triggerConventionReminder.ts",
"trigger-resync-old-conventions-to-pe": "ts-node src/adapters/primary/scripts/triggerResyncOldConventionsToPE.ts",
"seed": "NODE_ENV=local ts-node src/adapters/primary/scripts/seed.ts",
"generate-api-key": "ts-node src/adapters/primary/scripts/generateApiKey.ts",
"test:unit": "jest --watchAll --testRegex=.unit.test.ts",
Expand Down
4 changes: 4 additions & 0 deletions back/scalingo/cron.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
"command": "03 2 * * * pnpm back trigger-update-establishments-from-sirene",
"size": "M"
},
{
"command": "02 3 * * * pnpm back run trigger-resync-old-conventions-to-pe",
"size": "M"
},
{
"command": "15 05 * * * pnpm back run trigger-convention-reminder",
"size": "M"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import axios from "axios";
import { Pool } from "pg";
import { GetAccessTokenResponse } from "../../../domain/convention/ports/PoleEmploiGateway";
import { ResyncOldConventionToPe } from "../../../domain/convention/useCases/ResyncOldConventionsToPe";
import { noRetries } from "../../../domain/core/ports/RetryStrategy";
import { createLogger } from "../../../utils/logger";
import { InMemoryCachingGateway } from "../../secondary/core/InMemoryCachingGateway";
import { RealTimeGateway } from "../../secondary/core/TimeGateway/RealTimeGateway";
import { HttpPoleEmploiGateway } from "../../secondary/poleEmploi/HttpPoleEmploiGateway";
import { createPoleEmploiTargets } from "../../secondary/poleEmploi/PoleEmploi.targets";
import { AppConfig } from "../config/appConfig";
import { configureCreateHttpClientForExternalApi } from "../config/createHttpClientForExternalApi";
import { createUowPerformer } from "../config/uowConfig";
import { handleEndOfScriptNotification } from "./handleEndOfScriptNotification";

const logger = createLogger(__filename);

const config = AppConfig.createFromEnv();

const executeUsecase = async () => {
const timeGateway = new RealTimeGateway();

const httpPoleEmploiGateway = new HttpPoleEmploiGateway(
configureCreateHttpClientForExternalApi(
axios.create({ timeout: config.externalAxiosTimeout }),
)(createPoleEmploiTargets(config.peApiUrl)),
new InMemoryCachingGateway<GetAccessTokenResponse>(
timeGateway,
"expires_in",
),
config.peApiUrl,
config.poleEmploiAccessTokenConfig,
noRetries,
);

const { uowPerformer } = createUowPerformer(
config,
() =>
new Pool({
connectionString: config.pgImmersionDbUrl,
}),
);

const resyncOldConventionToPEUsecase = new ResyncOldConventionToPe(
uowPerformer,
httpPoleEmploiGateway,
timeGateway,
50,
);

return resyncOldConventionToPEUsecase.execute();
};

/* eslint-disable @typescript-eslint/no-floating-promises */
handleEndOfScriptNotification(
"resyncOldConventionToPE",
config,
executeUsecase,
(report) => {
const errors = Object.entries(report.errors).map(
([key, error]) => `${key}: ${error.message} `,
);

const skips = Object.entries(report.skips).map(
([key, reason]) => `${key}: ${reason} `,
);

return [
`Total of convention to sync : ${
report.success + errors.length + errors.length
}`,
`Number of successfully sync convention : ${report.success}`,
`Number of failures : ${errors.length}`,
`Number of skips : ${skips.length}`,
...(errors.length > 0 ? [`Failures : ${errors.join("\n")}`] : []),
...(skips.length > 0 ? [`Skips : ${skips.join("\n")}`] : []),
].join("\n");
},
logger,
);

0 comments on commit 7cba2f8

Please sign in to comment.