@@ -6,6 +6,7 @@ import { ParentSoftwareExternalData } from "../../../ports/GetSoftwareExternalDa
66import { Software } from "../../../usecases/readWriteSillData" ;
77import { Database } from "./kysely.database" ;
88import { stripNullOrUndefinedValues , jsonBuildObject } from "./kysely.utils" ;
9+ import { SILL } from "../../../../types/SILL" ;
910
1011const dateParser = ( str : string | Date | undefined | null ) => {
1112 if ( str && typeof str === "string" ) {
@@ -17,6 +18,19 @@ const dateParser = (str: string | Date | undefined | null) => {
1718 }
1819} ;
1920
21+ const computeRepoMetadata = ( repoMetadata : SILL . RepoMetadata | undefined | null ) : SILL . RepoMetadata | undefined => {
22+ const newMedata = repoMetadata ;
23+ if ( ! newMedata || ! newMedata . healthCheck ) return undefined ;
24+
25+ let score = 0 ;
26+ if ( repoMetadata . healthCheck ?. lastClosedIssue ) score += 1 ;
27+ if ( repoMetadata . healthCheck ?. lastClosedIssuePullRequest ) score += 1 ;
28+ if ( repoMetadata . healthCheck ?. lastCommit ) score += 1 ;
29+ newMedata . healthCheck . score = score / 3 ;
30+
31+ return newMedata ;
32+ } ;
33+
2034export const createPgSoftwareRepository = ( db : Kysely < Database > ) : SoftwareRepository => {
2135 const getBySoftwareId = makeGetSoftwareById ( db ) ;
2236 return {
@@ -189,7 +203,7 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
189203 programmingLanguages : softwareExternalData ?. programmingLanguages ?? [ ] ,
190204 referencePublications : softwareExternalData ?. referencePublications ,
191205 identifiers : softwareExternalData ?. identifiers ,
192- repoMetadata : softwareExternalData ?. repoMetadata ,
206+ repoMetadata : computeRepoMetadata ( softwareExternalData ?. repoMetadata ) ,
193207 applicationCategories : software . categories . concat (
194208 softwareExternalData ?. applicationCategories ?? [ ]
195209 ) ,
@@ -294,7 +308,7 @@ export const createPgSoftwareRepository = (db: Kysely<Database>): SoftwareReposi
294308 programmingLanguages : softwareExternalData ?. programmingLanguages ?? [ ] ,
295309 referencePublications : softwareExternalData ?. referencePublications ,
296310 identifiers : softwareExternalData ?. identifiers ,
297- repoMetadata : softwareExternalData ?. repoMetadata
311+ repoMetadata : computeRepoMetadata ( softwareExternalData ?. repoMetadata )
298312 } ) ;
299313 }
300314 ) ;
@@ -564,7 +578,7 @@ const makeGetSoftwareById =
564578 programmingLanguages : softwareExternalData ?. programmingLanguages ?? [ ] ,
565579 referencePublications : softwareExternalData ?. referencePublications ,
566580 identifiers : softwareExternalData ?. identifiers ,
567- repoMetadata : softwareExternalData ?. repoMetadata ,
581+ repoMetadata : computeRepoMetadata ( softwareExternalData ?. repoMetadata ) ,
568582 applicationCategories : filterDuplicate (
569583 software . categories . concat ( softwareExternalData ?. applicationCategories ?? [ ] )
570584 ) ,
0 commit comments