@@ -13,6 +13,7 @@ import { EncryptionService } from "@gitpod/gitpod-protocol/lib/encryption/encryp
13
13
import { ProjectDB } from "../project-db" ;
14
14
import { DBProject } from "./entity/db-project" ;
15
15
import { DBProjectEnvVar } from "./entity/db-project-env-vars" ;
16
+ import { DBProjectInfo } from "./entity/db-project-info" ;
16
17
17
18
function toProjectEnvVar ( envVarWithValue : ProjectEnvVarWithValue ) : ProjectEnvVar {
18
19
const envVar = { ...envVarWithValue } ;
@@ -37,6 +38,10 @@ export class ProjectDBImpl implements ProjectDB {
37
38
return ( await this . getEntityManager ( ) ) . getRepository < DBProjectEnvVar > ( DBProjectEnvVar ) ;
38
39
}
39
40
41
+ protected async getProjectInfoRepo ( ) : Promise < Repository < DBProjectInfo > > {
42
+ return ( await this . getEntityManager ( ) ) . getRepository < DBProjectInfo > ( DBProjectInfo ) ;
43
+ }
44
+
40
45
public async findProjectById ( projectId : string ) : Promise < Project | undefined > {
41
46
const repo = await this . getRepo ( ) ;
42
47
return repo . findOne ( { id : projectId , markedDeleted : false } ) ;
@@ -106,6 +111,12 @@ export class ProjectDBImpl implements ProjectDB {
106
111
project . markedDeleted = true ;
107
112
await repo . save ( project ) ;
108
113
}
114
+ // Delete any additional cached infos about this project
115
+ const projectInfoRepo = await this . getProjectInfoRepo ( ) ;
116
+ const info = await projectInfoRepo . findOne ( { projectId, deleted : false } ) ;
117
+ if ( info ) {
118
+ await projectInfoRepo . update ( projectId , { deleted : true } ) ;
119
+ }
109
120
}
110
121
111
122
public async setProjectEnvironmentVariable ( projectId : string , name : string , value : string , censored : boolean ) : Promise < void > {
@@ -164,4 +175,19 @@ export class ProjectDBImpl implements ProjectDB {
164
175
const envVarsWithValues = await envVarRepo . findByIds ( envVars ) ;
165
176
return envVarsWithValues ;
166
177
}
178
+
179
+ public async findCachedProjectOverview ( projectId : string ) : Promise < Project . Overview | undefined > {
180
+ const projectInfoRepo = await this . getProjectInfoRepo ( ) ;
181
+ const info = await projectInfoRepo . findOne ( { projectId } ) ;
182
+ return info ?. overview ;
183
+ }
184
+
185
+ public async storeCachedProjectOverview ( projectId : string , overview : Project . Overview ) : Promise < void > {
186
+ const projectInfoRepo = await this . getProjectInfoRepo ( ) ;
187
+ await projectInfoRepo . save ( {
188
+ projectId,
189
+ overview,
190
+ creationTime : new Date ( ) . toISOString ( ) ,
191
+ } ) ;
192
+ }
167
193
}
0 commit comments