@@ -158,17 +158,18 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
158158 // Combine all data
159159 return softwareRows . map ( software => {
160160 const extData = externalDataRecord [ software . id ] ;
161+ const resolvedLatestVersion = software . latestVersion ?? extData ?. latestVersion ;
161162 return {
162163 id : software . id ,
163164 name : software . name ,
164165 description : software . description ,
165166 image : extData ?. image ?? software . image ?? undefined ,
166- latestVersion : extData ?. latestVersion
167+ latestVersion : resolvedLatestVersion
167168 ? {
168- version : extData . latestVersion . version ?? undefined ,
169+ version : resolvedLatestVersion . version ?? undefined ,
169170 releaseDate :
170- extData . latestVersion . releaseDate ??
171- ( extData . dateCreated ? extData . dateCreated . toISOString ( ) . slice ( 0 , 10 ) : undefined )
171+ resolvedLatestVersion . releaseDate ??
172+ ( extData ? .dateCreated ? extData . dateCreated . toISOString ( ) . slice ( 0 , 10 ) : undefined )
172173 }
173174 : undefined ,
174175 addedTime : software . addedTime ,
@@ -181,7 +182,7 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
181182 operatingSystems : ( software . operatingSystems ?? { } ) as Partial < Record < Os , boolean > > ,
182183 runtimePlatforms : ( software . runtimePlatforms ?? [ ] ) as RuntimePlatform [ ] ,
183184 customAttributes : software . customAttributes ?? undefined ,
184- programmingLanguages : extData ?. programmingLanguages ?? [ ] ,
185+ programmingLanguages : software . programmingLanguages ?? extData ?. programmingLanguages ?? [ ] ,
185186 authors : extData ?. authors ?? [ ] ,
186187 userAndReferentCountByOrganization : countsMap [ software . id ] ?? { } ,
187188 similarSoftwares : similarMap [ software . id ] ?? [ ]
@@ -274,17 +275,18 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
274275 return softwareRows . map ( softwareRow => {
275276 const extData = externalDataRecord [ softwareRow . id ] ;
276277 const deref = softwareRow . dereferencing ;
278+ const resolvedLatestVersion = softwareRow . latestVersion ?? extData ?. latestVersion ;
277279 return {
278280 id : softwareRow . id ,
279281 name : softwareRow . name ,
280282 description : softwareRow . description ,
281283 image : extData ?. image ?? softwareRow . image ?? undefined ,
282- latestVersion : extData ?. latestVersion
284+ latestVersion : resolvedLatestVersion
283285 ? {
284- version : extData . latestVersion . version ?? undefined ,
286+ version : resolvedLatestVersion . version ?? undefined ,
285287 releaseDate :
286- extData . latestVersion . releaseDate ??
287- ( extData . dateCreated ? extData . dateCreated . toISOString ( ) . slice ( 0 , 10 ) : undefined )
288+ resolvedLatestVersion . releaseDate ??
289+ ( extData ? .dateCreated ? extData . dateCreated . toISOString ( ) . slice ( 0 , 10 ) : undefined )
288290 }
289291 : undefined ,
290292 addedTime : softwareRow . addedTime ,
@@ -303,17 +305,17 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
303305 customAttributes : softwareRow . customAttributes ?? undefined ,
304306 userAndReferentCountByOrganization : countsMap [ softwareRow . id ] ?? { } ,
305307 authors : extData ?. authors ?? [ ] ,
306- url : extData ?. url ?? undefined ,
307- codeRepositoryUrl : extData ?. codeRepositoryUrl ?? undefined ,
308- softwareHelp : extData ?. softwareHelp ?? undefined ,
308+ url : softwareRow . url ?? extData ?. url ?? undefined ,
309+ codeRepositoryUrl : softwareRow . codeRepositoryUrl ?? extData ?. codeRepositoryUrl ?? undefined ,
310+ softwareHelp : softwareRow . softwareHelp ?? extData ?. softwareHelp ?? undefined ,
309311 license : extData ?. license ?? softwareRow . license ,
310312 externalId : extData ?. externalId ,
311313 sourceSlug : extData ?. sourceSlug ,
312314 operatingSystems : ( softwareRow . operatingSystems ?? { } ) as Partial < Record < Os , boolean > > ,
313315 runtimePlatforms : ( softwareRow . runtimePlatforms ?? [ ] ) as RuntimePlatform [ ] ,
314316 similarSoftwares : similarMap [ softwareRow . id ] ?? [ ] ,
315317 keywords : softwareRow . keywords ?? [ ] ,
316- programmingLanguages : extData ?. programmingLanguages ?? [ ] ,
318+ programmingLanguages : softwareRow . programmingLanguages ?? extData ?. programmingLanguages ?? [ ] ,
317319 providers : extData ?. providers ?? [ ] ,
318320 referencePublications : extData ?. referencePublications ,
319321 identifiers : extData ?. identifiers ,
@@ -403,17 +405,19 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
403405
404406 const deref = softwareRow . dereferencing ;
405407
408+ const resolvedLatestVersion = softwareRow . latestVersion ?? extData ?. latestVersion ;
409+
406410 return {
407411 id : softwareRow . id ,
408412 name : softwareRow . name ,
409413 description : softwareRow . description ,
410414 image : extData ?. image ?? softwareRow . image ?? undefined ,
411- latestVersion : extData ?. latestVersion
415+ latestVersion : resolvedLatestVersion
412416 ? {
413- version : extData . latestVersion . version ?? undefined ,
417+ version : resolvedLatestVersion . version ?? undefined ,
414418 releaseDate :
415- extData . latestVersion . releaseDate ??
416- ( extData . dateCreated ? extData . dateCreated . toISOString ( ) . slice ( 0 , 10 ) : undefined )
419+ resolvedLatestVersion . releaseDate ??
420+ ( extData ? .dateCreated ? extData . dateCreated . toISOString ( ) . slice ( 0 , 10 ) : undefined )
417421 }
418422 : undefined ,
419423 addedTime : softwareRow . addedTime ,
@@ -432,17 +436,17 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
432436 customAttributes : softwareRow . customAttributes ?? undefined ,
433437 userAndReferentCountByOrganization,
434438 authors : extData ?. authors ?? [ ] ,
435- url : extData ?. url ?? undefined ,
436- codeRepositoryUrl : extData ?. codeRepositoryUrl ?? undefined ,
437- softwareHelp : extData ?. softwareHelp ?? undefined ,
439+ url : softwareRow . url ?? extData ?. url ?? undefined ,
440+ codeRepositoryUrl : softwareRow . codeRepositoryUrl ?? extData ?. codeRepositoryUrl ?? undefined ,
441+ softwareHelp : softwareRow . softwareHelp ?? extData ?. softwareHelp ?? undefined ,
438442 license : extData ?. license ?? softwareRow . license ,
439443 externalId : extData ?. externalId ,
440444 sourceSlug : extData ?. sourceSlug ,
441445 operatingSystems : ( softwareRow . operatingSystems ?? { } ) as Partial < Record < Os , boolean > > ,
442446 runtimePlatforms : ( softwareRow . runtimePlatforms ?? [ ] ) as RuntimePlatform [ ] ,
443447 similarSoftwares,
444448 keywords : softwareRow . keywords ?? [ ] ,
445- programmingLanguages : extData ?. programmingLanguages ?? [ ] ,
449+ programmingLanguages : softwareRow . programmingLanguages ?? extData ?. programmingLanguages ?? [ ] ,
446450 providers : extData ?. providers ?? [ ] ,
447451 referencePublications : extData ?. referencePublications ,
448452 identifiers : extData ?. identifiers ,
@@ -477,6 +481,12 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
477481 applicationCategories,
478482 keywords,
479483 addedByUserId,
484+ isLibreSoftware,
485+ url,
486+ codeRepositoryUrl,
487+ softwareHelp,
488+ latestVersion,
489+ programmingLanguages,
480490 ...rest
481491 } = software ;
482492
@@ -501,7 +511,13 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
501511 runtimePlatforms : JSON . stringify ( runtimePlatforms ) ,
502512 applicationCategories : JSON . stringify ( applicationCategories ) ,
503513 addedByUserId,
504- keywords : JSON . stringify ( keywords )
514+ keywords : JSON . stringify ( keywords ) ,
515+ isLibreSoftware : isLibreSoftware ?? null ,
516+ url : url ?? null ,
517+ codeRepositoryUrl : codeRepositoryUrl ?? null ,
518+ softwareHelp : softwareHelp ?? null ,
519+ latestVersion : latestVersion ? JSON . stringify ( latestVersion ) : null ,
520+ programmingLanguages : programmingLanguages ? JSON . stringify ( programmingLanguages ) : null
505521 } )
506522 . returning ( "id as softwareId" )
507523 . executeTakeFirstOrThrow ( ) ;
@@ -523,6 +539,12 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
523539 applicationCategories,
524540 keywords,
525541 addedByUserId,
542+ isLibreSoftware,
543+ url,
544+ codeRepositoryUrl,
545+ softwareHelp,
546+ latestVersion,
547+ programmingLanguages,
526548 ...rest
527549 } = software ;
528550
@@ -544,7 +566,13 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
544566 runtimePlatforms : JSON . stringify ( runtimePlatforms ) ,
545567 applicationCategories : JSON . stringify ( applicationCategories ) ,
546568 addedByUserId,
547- keywords : JSON . stringify ( keywords )
569+ keywords : JSON . stringify ( keywords ) ,
570+ isLibreSoftware : isLibreSoftware ?? null ,
571+ url : url ?? null ,
572+ codeRepositoryUrl : codeRepositoryUrl ?? null ,
573+ softwareHelp : softwareHelp ?? null ,
574+ latestVersion : latestVersion ? JSON . stringify ( latestVersion ) : null ,
575+ programmingLanguages : programmingLanguages ? JSON . stringify ( programmingLanguages ) : null
548576 } )
549577 . where ( "id" , "=" , softwareId )
550578 . execute ( ) ;
0 commit comments