@@ -17,7 +17,7 @@ import {
17
17
viewOfChangeset ,
18
18
} from '../../common' ;
19
19
import { CommonRepository , DatabaseService , OnIndex } from '../../core' ;
20
- import { DbChanges , getChanges } from '../../core/database/changes' ;
20
+ import { ChangesOf , getChanges } from '../../core/database/changes' ;
21
21
import {
22
22
ACTIVE ,
23
23
coalesce ,
@@ -45,6 +45,8 @@ import {
45
45
IEngagement ,
46
46
InternshipEngagement ,
47
47
LanguageEngagement ,
48
+ UpdateInternshipEngagement ,
49
+ UpdateLanguageEngagement ,
48
50
} from './dto' ;
49
51
50
52
export type LanguageOrEngagementId = MergeExclusive <
@@ -261,100 +263,52 @@ export class EngagementRepository extends CommonRepository {
261
263
262
264
getActualLanguageChanges = getChanges ( LanguageEngagement ) ;
263
265
264
- async updateLanguageProperties (
265
- object : LanguageEngagement | UnsecuredDto < LanguageEngagement > ,
266
- changes : DbChanges < LanguageEngagement > ,
266
+ async updateLanguage (
267
+ existing : LanguageEngagement | UnsecuredDto < LanguageEngagement > ,
268
+ changes : ChangesOf < LanguageEngagement , UpdateLanguageEngagement > ,
267
269
changeset ?: ID ,
268
270
) : Promise < void > {
271
+ const { pnp, ...simpleChanges } = changes ;
272
+
269
273
await this . db . updateProperties ( {
270
274
type : LanguageEngagement ,
271
- object,
272
- changes,
275
+ object : existing ,
276
+ changes : simpleChanges ,
273
277
changeset,
274
278
} ) ;
275
279
}
276
280
277
281
getActualInternshipChanges = getChanges ( InternshipEngagement ) ;
278
282
279
- async updateMentor ( id : ID , mentorId : ID ) {
280
- await this . db
281
- . query ( )
282
- . match ( [ node ( 'newMentorUser' , 'User' , { id : mentorId } ) ] )
283
- . match ( [
284
- node ( 'internshipEngagement' , 'InternshipEngagement' , {
285
- id,
286
- } ) ,
287
- ] )
288
- . optionalMatch ( [
289
- node ( 'internshipEngagement' ) ,
290
- relation ( 'out' , 'rel' , 'mentor' , ACTIVE ) ,
291
- node ( 'oldMentorUser' , 'User' ) ,
292
- ] )
293
- . set ( {
294
- values : {
295
- rel : {
296
- active : false ,
297
- } ,
298
- } ,
299
- } )
300
- . create ( [
301
- node ( 'internshipEngagement' ) ,
302
- relation ( 'out' , '' , 'mentor' , {
303
- active : true ,
304
- createdAt : DateTime . local ( ) ,
305
- } ) ,
306
- node ( 'newMentorUser' ) ,
307
- ] )
308
- . return ( 'internshipEngagement.id as id' )
309
- . run ( ) ;
310
- }
311
-
312
- async updateCountryOfOrigin ( id : ID , countryOfOriginId : ID ) {
313
- await this . db
314
- . query ( )
315
- . match ( [
316
- node ( 'newCountry' , 'Location' , {
317
- id : countryOfOriginId ,
318
- } ) ,
319
- ] )
320
- . match ( [
321
- node ( 'internshipEngagement' , 'InternshipEngagement' , {
322
- id,
323
- } ) ,
324
- ] )
325
- . optionalMatch ( [
326
- node ( 'internshipEngagement' ) ,
327
- relation ( 'out' , 'rel' , 'countryOfOrigin' , ACTIVE ) ,
328
- node ( 'oldCountry' , 'Location' ) ,
329
- ] )
330
- . set ( {
331
- values : {
332
- rel : {
333
- active : false ,
334
- } ,
335
- } ,
336
- } )
337
- . create ( [
338
- node ( 'internshipEngagement' ) ,
339
- relation ( 'out' , '' , 'countryOfOrigin' , {
340
- active : true ,
341
- createdAt : DateTime . local ( ) ,
342
- } ) ,
343
- node ( 'newCountry' ) ,
344
- ] )
345
- . return ( 'internshipEngagement.id as id' )
346
- . run ( ) ;
347
- }
348
-
349
- async updateInternshipProperties (
350
- object : InternshipEngagement | UnsecuredDto < InternshipEngagement > ,
351
- changes : DbChanges < InternshipEngagement > ,
283
+ async updateInternship (
284
+ existing : InternshipEngagement | UnsecuredDto < InternshipEngagement > ,
285
+ changes : ChangesOf < InternshipEngagement , UpdateInternshipEngagement > ,
352
286
changeset ?: ID ,
353
287
) : Promise < void > {
288
+ const {
289
+ mentorId,
290
+ countryOfOriginId,
291
+ growthPlan : _ ,
292
+ ...simpleChanges
293
+ } = changes ;
294
+
295
+ if ( mentorId !== undefined ) {
296
+ await this . updateRelation ( 'mentor' , 'User' , existing . id , mentorId ) ;
297
+ }
298
+
299
+ if ( countryOfOriginId !== undefined ) {
300
+ await this . updateRelation (
301
+ 'countryOfOrigin' ,
302
+ 'Location' ,
303
+ existing . id ,
304
+ countryOfOriginId ,
305
+ ) ;
306
+ }
307
+
354
308
await this . db . updateProperties ( {
355
309
type : InternshipEngagement ,
356
- object,
357
- changes,
310
+ object : existing ,
311
+ changes : simpleChanges ,
358
312
changeset,
359
313
} ) ;
360
314
}
0 commit comments