package Ġcover stats . server . datastore Ċ Ċ import Ġcover stats . server . cache . Cache Ċ import Ġcover stats . server . models . coverage . Coverage Report Ċ import Ġcover stats . server . models . datastore . Repository Ċ import Ġcover stats . server . utils . deserialize Json Ċ import Ġcover stats . server . utils . serialize Json Ċ import Ġjava . nio . charset . StandardCharsets . UTF _ 8 Ċ Ċ /** Ċ Ġ* ĠKey - value Ġcache Ġdata Ġstore Ġfor Ġtesting Ċ Ġ*/ Ċ class ĠCache DataStore ( val Ġcache : ĠCache ) Ġ: ĠData Store Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Repository ByName ( scm : ĠString , Ġname : ĠString ): ĠRepository ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcache . get (" repo :$ scm /$ name ") ?. toString ( UTF _ 8 )?. deserialize Json () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Repository By Token ( token : ĠString ): ĠRepository ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Name Ġ= Ġcache . get (" token :$ token ") ?. toString ( UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrepo Name ?. let Ġ{ Ġcache . get (" repo :$ it ") ?. toString ( UTF _ 8 )?. deserialize Json () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave Repository ( repo : ĠRepository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcache . put (" repo :${ repo . scm }/${ repo . name }", Ġrepo . serialize Json (). toByteArray ( UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġcache . put (" token :${ repo . upload Token }", Ġ"${ repo . scm }/${ repo . name }". toByteArray ( UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Report By Commit Id ( scm : ĠString , Ġrepo : ĠString , Ġcommit Id : ĠString ): ĠCoverage Report ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcache . get (" report :$ scm /$ repo /$ commit Id ") ?. toString ( UTF _ 8 )?. deserialize Json () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave Report ( report : ĠCoverage Report ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" report :${ report . scm }/${ report . repo }/${ report . commit Id }" ĊĠĠĠĠĠĠĠ Ġcache . put ( key , Ġreport . serialize Json (). toByteArray ( UTF _ 8 )) ĊĠĠĠ Ġ} Ċ Ċ }