@@ -20,7 +20,7 @@ import type { EntityOperationOptions } from '@/core/types';
2020import { GroupsService } from '@/groups/groups.service' ;
2121import { InstrumentsService } from '@/instruments/instruments.service' ;
2222import { SessionsService } from '@/sessions/sessions.service' ;
23- import type { CreateSubjectDto } from '@/subjects/dto/create-subject.dto' ;
23+ import { CreateSubjectDto } from '@/subjects/dto/create-subject.dto' ;
2424import { SubjectsService } from '@/subjects/subjects.service' ;
2525
2626import { InstrumentMeasuresService } from './instrument-measures.service' ;
@@ -276,6 +276,14 @@ export class InstrumentRecordsService {
276276 const createdSessionsArray : Session [ ] = [ ] ;
277277
278278 try {
279+ const subjectIdList = records . map ( ( { subjectId } ) => {
280+ const subjectToAdd : CreateSubjectDto = { id : subjectId } ;
281+
282+ return subjectToAdd ;
283+ } ) ;
284+
285+ await this . subjectsService . createMany ( subjectIdList ) ;
286+
279287 const preProcessedRecords = await Promise . all (
280288 records . map ( async ( record ) => {
281289 const { data : rawData , date, subjectId } = record ;
@@ -289,9 +297,6 @@ export class InstrumentRecordsService {
289297 ) ;
290298 }
291299
292- // Ensure subject exists
293- await this . createSubjectIfNotFound ( subjectId ) ;
294-
295300 const session = await this . sessionsService . create ( {
296301 date : date ,
297302 groupId : groupId ?? null ,
@@ -316,7 +321,6 @@ export class InstrumentRecordsService {
316321 } ;
317322 } )
318323 ) ;
319-
320324 await this . instrumentRecordModel . createMany ( {
321325 data : preProcessedRecords
322326 } ) ;
@@ -333,30 +337,6 @@ export class InstrumentRecordsService {
333337 }
334338 }
335339
336- private async createSubjectIfNotFound ( subjectId : string ) {
337- try {
338- return await this . subjectsService . findById ( subjectId ) ;
339- } catch ( exception ) {
340- if ( exception instanceof NotFoundException ) {
341- const addedSubject : CreateSubjectDto = {
342- id : subjectId
343- } ;
344- try {
345- return await this . subjectsService . create ( addedSubject ) ;
346- } catch ( prismaError ) {
347- if ( prismaError instanceof Prisma . PrismaClientKnownRequestError && prismaError . code === 'P2002' ) {
348- console . error ( prismaError ) ;
349- return await this . subjectsService . findById ( subjectId ) ;
350- } else {
351- throw prismaError ;
352- }
353- }
354- } else {
355- throw exception ;
356- }
357- }
358- }
359-
360340 private parseJson ( data : unknown ) {
361341 return JSON . parse ( JSON . stringify ( data ) , reviver ) as unknown ;
362342 }
0 commit comments