1
1
import { faker } from '@faker-js/faker' ;
2
2
3
+ import { logger } from '../../src/shared/infrastructure/utils/logger.js' ;
3
4
import caseINEok from './cases/ine-ok.js' ;
4
5
import caseSameINEDifferentPerson from './cases/same-ine-different-person.js' ;
5
6
import caseSamePersonDifferentBirthdate from './cases/same-person-different-birthdate.js' ;
@@ -12,34 +13,53 @@ const NUMBER_OF_SEEDS = Number(process.env.DATAMART_NUMBER_OF_SEEDS) || 100;
12
13
const insertScoDatamart = async ( knex ) => {
13
14
const scoDatamart = 'data_export_parcoursup_certif_result' ;
14
15
15
- // Case 1 : INE ok
16
- await knex . batchInsert ( scoDatamart , faker . helpers . multiple ( caseINEok , { count : NUMBER_OF_SEEDS } ) . flat ( ) ) ;
17
- // Case 2 : UAI ok
18
- await knex . batchInsert ( scoDatamart , faker . helpers . multiple ( caseUAIok , { count : NUMBER_OF_SEEDS } ) . flat ( ) ) ;
19
- // Case 3 : Same INE different persons
20
- await knex . batchInsert (
21
- scoDatamart ,
22
- faker . helpers . multiple ( caseSameINEDifferentPerson , { count : NUMBER_OF_SEEDS } ) . flat ( ) ,
23
- ) ;
24
- // Case 4 : Same person but different birthdate
25
- await knex . batchInsert (
26
- scoDatamart ,
27
- faker . helpers . multiple ( caseSamePersonDifferentBirthdate , { count : NUMBER_OF_SEEDS } ) . flat ( ) ,
28
- ) ;
29
- // Case 5 : Complicated names (accents, dashes)
30
- await knex . batchInsert ( scoDatamart , faker . helpers . multiple ( caseSpecialNames , { count : 1 } ) . flat ( ) ) ;
16
+ logger . info ( 'Start Case 1 : INE ok' ) ;
17
+ await _chunkify ( { numberOfSeeds : NUMBER_OF_SEEDS , knex, datamart : scoDatamart , generateFn : caseINEok } ) ;
18
+
19
+ logger . info ( 'Start Case 2 : UAI ok' ) ;
20
+ await _chunkify ( { numberOfSeeds : NUMBER_OF_SEEDS , knex, datamart : scoDatamart , generateFn : caseUAIok } ) ;
21
+
22
+ logger . info ( 'Start Case 3 : Same INE different persons' ) ;
23
+ await _chunkify ( {
24
+ numberOfSeeds : NUMBER_OF_SEEDS ,
25
+ knex,
26
+ datamart : scoDatamart ,
27
+ generateFn : caseSameINEDifferentPerson ,
28
+ } ) ;
29
+
30
+ logger . info ( 'Start Case 4 : Same person but different birthdate' ) ;
31
+ await _chunkify ( {
32
+ numberOfSeeds : NUMBER_OF_SEEDS ,
33
+ knex,
34
+ datamart : scoDatamart ,
35
+ generateFn : caseSamePersonDifferentBirthdate ,
36
+ } ) ;
37
+
38
+ logger . info ( 'Start Case 5 : Complicated names (accents, dashes' ) ;
39
+ await _chunkify ( { numberOfSeeds : NUMBER_OF_SEEDS , knex, datamart : scoDatamart , generateFn : caseSpecialNames } ) ;
31
40
} ;
32
41
33
42
const insertGeneralPublicDatamart = async ( knex ) => {
43
+ logger . info ( 'Start Case 6 : Verification code OK' ) ;
34
44
const generalPublicDatamart = 'data_export_parcoursup_certif_result_code_validation' ;
35
- await knex ( generalPublicDatamart ) . truncate ( ) ;
36
- await knex . batchInsert (
37
- generalPublicDatamart ,
38
- faker . helpers . multiple ( caseVerificationCodeOK , { count : NUMBER_OF_SEEDS } ) . flat ( ) ,
39
- ) ;
45
+ await _chunkify ( {
46
+ numberOfSeeds : NUMBER_OF_SEEDS ,
47
+ knex,
48
+ datamart : generalPublicDatamart ,
49
+ generateFn : caseVerificationCodeOK ,
50
+ } ) ;
40
51
} ;
41
52
42
53
export async function seed ( knex ) {
43
54
await insertScoDatamart ( knex ) ;
44
55
await insertGeneralPublicDatamart ( knex ) ;
45
56
}
57
+
58
+ const _chunkify = async ( { numberOfSeeds, knex, datamart, generateFn } ) => {
59
+ const chunkSize = 100 ;
60
+ let remaining = numberOfSeeds ;
61
+ do {
62
+ await knex . batchInsert ( datamart , faker . helpers . multiple ( generateFn , { count : chunkSize } ) . flat ( ) ) ;
63
+ remaining = remaining - chunkSize ;
64
+ } while ( remaining / chunkSize >= 1 ) ;
65
+ } ;
0 commit comments