Skip to content

Commit d65581c

Browse files
committed
fix(backend): update data from open data every week
1 parent 0543e2f commit d65581c

File tree

14 files changed

+94
-58
lines changed

14 files changed

+94
-58
lines changed
0 Bytes
Binary file not shown.

packages/backend/src/_migrations/1731349672897-manual-migration.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { domifaConfig } from "../config";
44
import { appLogger } from "../util";
55
import { normalizeString } from "@domifa/common";
66

7-
const batchSize = 5000;
7+
const batchSize = 2000;
88
export class ManualMigration1731349672897 implements MigrationInterface {
99
public async up(queryRunner: QueryRunner): Promise<void> {
1010
if (
@@ -51,7 +51,6 @@ export class ManualMigration1731349672897 implements MigrationInterface {
5151
}
5252
}
5353

54-
// Valide la transaction
5554
await queryRunner.commitTransaction();
5655

5756
processedRecords += usagers.length;
@@ -71,9 +70,6 @@ export class ManualMigration1731349672897 implements MigrationInterface {
7170
);
7271
throw error;
7372
}
74-
75-
// Petite pause entre les lots
76-
await new Promise((resolve) => setTimeout(resolve, 100));
7773
}
7874
}
7975
}

packages/backend/src/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { ContactSupportModule } from "./modules/contact-support/contact-support.
1818
import { FileManagerService } from "./util/file-manager/file-manager.service";
1919
import { InteractionsService } from "./modules/interactions/services";
2020
import { SmsModule } from "./modules/sms/sms.module";
21+
import { OpenDataPlacesModule } from "./modules/open-data-places/open-data-places.module";
2122

2223
@Module({
2324
controllers: [HealthController],
@@ -37,6 +38,7 @@ import { SmsModule } from "./modules/sms/sms.module";
3738
PortailAdminModule,
3839
AppLogsModule,
3940
ContactSupportModule,
41+
OpenDataPlacesModule,
4042
],
4143
providers: [PostgresHealthIndicator, FileManagerService, InteractionsService],
4244
})

packages/backend/src/modules/open-data-places/load-data-inclusion.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,9 @@ const getFromDataInclusion = async (structureType: "CCAS" | "CIAS") => {
9393

9494
if (datInclusionData?.length >= 500) {
9595
appLogger.warn(
96-
"Import 'data-inclusion' data N°" +
97-
page +
98-
" : " +
99-
datInclusionData.length * page +
100-
"/" +
101-
nbResults
96+
`Import 'data-inclusion' data N°${page} : ${
97+
datInclusionData.length * page
98+
}/${nbResults}`
10299
);
103100
page++;
104101
await getFromDataInclusion(structureType);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Module } from "@nestjs/common";
2+
import { UpdateOpenDataPlacesService } from "./services/update-open-data-places/update-open-data-places.service";
3+
4+
@Module({
5+
providers: [UpdateOpenDataPlacesService],
6+
})
7+
export class OpenDataPlacesModule {}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Test, TestingModule } from "@nestjs/testing";
2+
import { UpdateOpenDataPlacesService } from "./update-open-data-places.service";
3+
4+
describe("UpdateOpenDataPlacesService", () => {
5+
let service: UpdateOpenDataPlacesService;
6+
7+
beforeEach(async () => {
8+
const module: TestingModule = await Test.createTestingModule({
9+
providers: [UpdateOpenDataPlacesService],
10+
}).compile();
11+
12+
service = module.get<UpdateOpenDataPlacesService>(
13+
UpdateOpenDataPlacesService
14+
);
15+
});
16+
17+
it("should be defined", () => {
18+
expect(service).toBeDefined();
19+
});
20+
});
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { Injectable, OnModuleInit } from "@nestjs/common";
2+
import { Cron } from "@nestjs/schedule";
3+
import { domifaConfig } from "../../../../config";
4+
import { isCronEnabled } from "../../../../config/services/isCronEnabled.service";
5+
import { loadDomifaData } from "../../load-domifa";
6+
import { loadMssData } from "../../load-mss";
7+
import { loadSoliguideData } from "../../load-soliguide";
8+
9+
@Injectable()
10+
export class UpdateOpenDataPlacesService implements OnModuleInit {
11+
async onModuleInit() {
12+
if (domifaConfig().envId === "prod" && isCronEnabled()) {
13+
await this.loadOpenDataPlaces();
14+
}
15+
}
16+
17+
@Cron("0 06 * * 2", {
18+
timeZone: "Europe/Paris",
19+
disabled: domifaConfig().envId !== "prod" && !isCronEnabled(),
20+
})
21+
protected async loadOpenDataPlaces() {
22+
await loadDomifaData();
23+
await loadSoliguideData();
24+
await loadMssData();
25+
}
26+
}

packages/backend/src/run-app.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ import { bootstrapApplication, tearDownApplication } from "./app.bootstrap";
33

44
import { appLogger } from "./util";
55

6-
import { domifaConfig } from "./config";
7-
import { loadDomifaData } from "./modules/open-data-places/load-domifa";
8-
import { loadMssData } from "./modules/open-data-places/load-mss";
9-
import { loadSoliguideData } from "./modules/open-data-places/load-soliguide";
10-
116
(async () => {
127
appLogger.warn(`[${__filename}] Starting app...`);
138

@@ -18,15 +13,6 @@ import { loadSoliguideData } from "./modules/open-data-places/load-soliguide";
1813
const server = await app.listen(3000);
1914
server.setTimeout(1000 * 60 * 5);
2015
appLogger.warn(`[${__filename}] Application listening on port 3000`);
21-
22-
if (
23-
(domifaConfig().envId === "prod" || domifaConfig().envId === "local") &&
24-
domifaConfig().cron.enable
25-
) {
26-
await loadDomifaData();
27-
await loadSoliguideData();
28-
await loadMssData();
29-
}
3016
} catch (error) {
3117
const err = error as Error;
3218
appLogger.error(`[${__filename}] Error running application`, {

packages/backend/src/stats/services/publicStats.service.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ import { In } from "typeorm";
2929
export class PublicStatsService implements OnModuleInit {
3030
constructor(private readonly structuresService: StructuresService) {}
3131

32-
onModuleInit() {
32+
async onModuleInit() {
3333
if (domifaConfig().envId === "local" && isCronEnabled()) {
34-
this.updateAllStatsCache();
34+
await this.updateAllStatsCache();
3535
}
3636
}
3737

3838
@Cron(CronExpression.EVERY_DAY_AT_2AM, {
3939
timeZone: "Europe/Paris",
40-
disabled: isCronEnabled(),
40+
disabled: !isCronEnabled(),
4141
})
4242
public async updateAllStatsCache(): Promise<void> {
4343
for (const regionId of Object.keys(REGIONS_LISTE)) {
44-
appLogger.info("[CACHE] Update public stats for region " + regionId);
44+
appLogger.info(`[CACHE] Update public stats for region ${regionId}`);
4545
await this.generatePublicStats({ updateCache: true, regionId });
4646
}
4747

@@ -58,7 +58,7 @@ export class PublicStatsService implements OnModuleInit {
5858
updateCache?: boolean;
5959
regionId?: string;
6060
}): Promise<PublicStats> {
61-
const key = regionId ? "public-stats-" + regionId : "public-stats";
61+
const key = regionId ? `public-stats-${regionId}` : "public-stats";
6262

6363
const value = await publicStatsCacheRepository
6464
.createQueryBuilder("public_stats_cache")

packages/backend/src/usagers/controllers/usagers-decision.controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export class UsagersDecisionController {
8787
// eslint-disable-next-line @typescript-eslint/no-unused-vars
8888
@Param("usagerRef", new ParseIntPipe()) _usagerRef: number
8989
): Promise<Usager> {
90-
return this.usagersService.renouvellement(usager, user);
90+
return await this.usagersService.renouvellement(usager, user);
9191
}
9292

9393
@UseGuards(UsagerAccessGuard)

0 commit comments

Comments
 (0)