Skip to content

Commit c201542

Browse files
Merge branch 'main' into ft/focus-targets
2 parents 78ee74f + cbc8b38 commit c201542

File tree

20 files changed

+509
-229
lines changed

20 files changed

+509
-229
lines changed

components/gitpod-db/src/typeorm/project-db-impl.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44
* See License.AGPL.txt in the project root for license information.
55
*/
66

7+
import { PartialProject, Project, ProjectEnvVar, ProjectEnvVarWithValue, ProjectUsage } from "@gitpod/gitpod-protocol";
8+
import { EncryptionService } from "@gitpod/gitpod-protocol/lib/encryption/encryption-service";
79
import { inject, injectable, optional } from "inversify";
810
import { EntityManager, Repository } from "typeorm";
911
import { v4 as uuidv4 } from "uuid";
10-
import { PartialProject, Project, ProjectEnvVar, ProjectEnvVarWithValue, ProjectUsage } from "@gitpod/gitpod-protocol";
11-
import { EncryptionService } from "@gitpod/gitpod-protocol/lib/encryption/encryption-service";
1212
import { ProjectDB } from "../project-db";
1313
import { DBProject } from "./entity/db-project";
1414
import { DBProjectEnvVar } from "./entity/db-project-env-vars";
1515
import { DBProjectInfo } from "./entity/db-project-info";
1616
import { DBProjectUsage } from "./entity/db-project-usage";
17-
import { TransactionalDBImpl, UndefinedEntityManager } from "./transactional-db-impl";
17+
import { TransactionalDBImpl } from "./transactional-db-impl";
18+
import { TypeORM } from "./typeorm";
1819

1920
function toProjectEnvVar(envVarWithValue: ProjectEnvVarWithValue): ProjectEnvVar {
2021
const envVar = { ...envVarWithValue };
@@ -25,29 +26,30 @@ function toProjectEnvVar(envVarWithValue: ProjectEnvVarWithValue): ProjectEnvVar
2526
@injectable()
2627
export class ProjectDBImpl extends TransactionalDBImpl<ProjectDB> implements ProjectDB {
2728
constructor(
28-
@inject(EncryptionService) protected readonly encryptionService: EncryptionService,
29-
@inject(UndefinedEntityManager) @optional() transactionalEM: EntityManager | undefined,
29+
@inject(TypeORM) typeorm: TypeORM,
30+
@inject(EncryptionService) private readonly encryptionService: EncryptionService,
31+
@optional() transactionalEM?: EntityManager,
3032
) {
31-
super(transactionalEM);
33+
super(typeorm, transactionalEM);
3234
}
3335

3436
protected createTransactionalDB(transactionalEM: EntityManager): ProjectDB {
35-
return new ProjectDBImpl(this.encryptionService, transactionalEM);
37+
return new ProjectDBImpl(this.typeorm, this.encryptionService, transactionalEM);
3638
}
3739

38-
protected async getRepo(): Promise<Repository<DBProject>> {
40+
private async getRepo(): Promise<Repository<DBProject>> {
3941
return (await this.getEntityManager()).getRepository<DBProject>(DBProject);
4042
}
4143

42-
protected async getProjectEnvVarRepo(): Promise<Repository<DBProjectEnvVar>> {
44+
private async getProjectEnvVarRepo(): Promise<Repository<DBProjectEnvVar>> {
4345
return (await this.getEntityManager()).getRepository<DBProjectEnvVar>(DBProjectEnvVar);
4446
}
4547

46-
protected async getProjectInfoRepo(): Promise<Repository<DBProjectInfo>> {
48+
private async getProjectInfoRepo(): Promise<Repository<DBProjectInfo>> {
4749
return (await this.getEntityManager()).getRepository<DBProjectInfo>(DBProjectInfo);
4850
}
4951

50-
protected async getProjectUsageRepo(): Promise<Repository<DBProjectUsage>> {
52+
private async getProjectUsageRepo(): Promise<Repository<DBProjectUsage>> {
5153
return (await this.getEntityManager()).getRepository<DBProjectUsage>(DBProjectUsage);
5254
}
5355

components/gitpod-db/src/typeorm/team-db-impl.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,55 +5,56 @@
55
*/
66

77
import {
8+
OrganizationSettings,
89
Team,
910
TeamMemberInfo,
1011
TeamMemberRole,
1112
TeamMembershipInvite,
12-
OrganizationSettings,
1313
User,
1414
} from "@gitpod/gitpod-protocol";
15+
import { ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error";
16+
import { randomBytes } from "crypto";
1517
import { inject, injectable, optional } from "inversify";
18+
import slugify from "slugify";
1619
import { EntityManager, Repository } from "typeorm";
1720
import { v4 as uuidv4 } from "uuid";
18-
import { randomBytes } from "crypto";
21+
import { ResponseError } from "vscode-jsonrpc";
1922
import { TeamDB } from "../team-db";
2023
import { DBTeam } from "./entity/db-team";
2124
import { DBTeamMembership } from "./entity/db-team-membership";
22-
import { DBUser } from "./entity/db-user";
2325
import { DBTeamMembershipInvite } from "./entity/db-team-membership-invite";
24-
import { ResponseError } from "vscode-jsonrpc";
25-
import { ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error";
26-
import slugify from "slugify";
2726
import { DBOrgSettings } from "./entity/db-team-settings";
28-
import { TransactionalDBImpl, UndefinedEntityManager } from "./transactional-db-impl";
27+
import { DBUser } from "./entity/db-user";
28+
import { TransactionalDBImpl } from "./transactional-db-impl";
29+
import { TypeORM } from "./typeorm";
2930

3031
@injectable()
3132
export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
32-
constructor(@inject(UndefinedEntityManager) @optional() transactionalEM: EntityManager | undefined) {
33-
super(transactionalEM);
33+
constructor(@inject(TypeORM) typeorm: TypeORM, @optional() transactionalEM?: EntityManager) {
34+
super(typeorm, transactionalEM);
3435
}
3536

3637
protected createTransactionalDB(transactionalEM: EntityManager): TeamDB {
37-
return new TeamDBImpl(transactionalEM);
38+
return new TeamDBImpl(this.typeorm, transactionalEM);
3839
}
3940

40-
protected async getTeamRepo(): Promise<Repository<DBTeam>> {
41+
private async getTeamRepo(): Promise<Repository<DBTeam>> {
4142
return (await this.getEntityManager()).getRepository<DBTeam>(DBTeam);
4243
}
4344

44-
protected async getMembershipRepo(): Promise<Repository<DBTeamMembership>> {
45+
private async getMembershipRepo(): Promise<Repository<DBTeamMembership>> {
4546
return (await this.getEntityManager()).getRepository<DBTeamMembership>(DBTeamMembership);
4647
}
4748

48-
protected async getMembershipInviteRepo(): Promise<Repository<DBTeamMembershipInvite>> {
49+
private async getMembershipInviteRepo(): Promise<Repository<DBTeamMembershipInvite>> {
4950
return (await this.getEntityManager()).getRepository<DBTeamMembershipInvite>(DBTeamMembershipInvite);
5051
}
5152

52-
protected async getOrgSettingsRepo(): Promise<Repository<DBOrgSettings>> {
53+
private async getOrgSettingsRepo(): Promise<Repository<DBOrgSettings>> {
5354
return (await this.getEntityManager()).getRepository<DBOrgSettings>(DBOrgSettings);
5455
}
5556

56-
protected async getUserRepo(): Promise<Repository<DBUser>> {
57+
private async getUserRepo(): Promise<Repository<DBUser>> {
5758
return (await this.getEntityManager()).getRepository<DBUser>(DBUser);
5859
}
5960

components/gitpod-db/src/typeorm/transactional-db-impl.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,11 @@ export interface TransactionalDB<DB> {
1212
transaction<R>(code: (db: DB) => Promise<R>): Promise<R>;
1313
}
1414

15-
// A symbol we never bind to
16-
export const UndefinedEntityManager = Symbol("UndefinedEntityManager");
17-
1815
@injectable()
1916
export abstract class TransactionalDBImpl<DB> implements TransactionalDB<DB> {
20-
@inject(TypeORM) protected readonly typeorm: TypeORM;
21-
2217
constructor(
23-
@optional() protected transactionalEM: EntityManager | undefined, // will be undefined when constructed with inversify, which is inteded
18+
@inject(TypeORM) protected readonly typeorm: TypeORM,
19+
@optional() private transactionalEM?: EntityManager,
2420
) {}
2521

2622
protected async getEntityManager(): Promise<EntityManager> {

components/gitpod-db/src/typeorm/user-db-impl.ts

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ import { DBIdentity } from "./entity/db-identity";
4343
import { DBTokenEntry } from "./entity/db-token-entry";
4444
import { DBUser } from "./entity/db-user";
4545
import { DBUserEnvVar } from "./entity/db-user-env-vars";
46-
import { DBWorkspace } from "./entity/db-workspace";
4746
import { DBUserSshPublicKey } from "./entity/db-user-ssh-public-key";
4847
import { log } from "@gitpod/gitpod-protocol/lib/util/logging";
4948
import { DataCache } from "../data-cache";
5049
import { TransactionalDBImpl } from "./transactional-db-impl";
50+
import { TypeORM } from "./typeorm";
5151

5252
// OAuth token expiry
5353
const tokenExpiryInFuture = new DateInterval("7d");
@@ -63,11 +63,12 @@ function getUserCacheKey(id: string): string {
6363
@injectable()
6464
export class TypeORMUserDBImpl extends TransactionalDBImpl<UserDB> implements UserDB {
6565
constructor(
66-
@inject(EncryptionService) protected readonly encryptionService: EncryptionService,
67-
@inject(DataCache) protected readonly cache: DataCache,
68-
@optional() transactionalEM: EntityManager,
66+
@inject(TypeORM) typeorm: TypeORM,
67+
@inject(EncryptionService) private readonly encryptionService: EncryptionService,
68+
@inject(DataCache) private readonly cache: DataCache,
69+
@optional() transactionalEM?: EntityManager,
6970
) {
70-
super(transactionalEM);
71+
super(typeorm, transactionalEM);
7172
}
7273

7374
@postConstruct()
@@ -77,33 +78,26 @@ export class TypeORMUserDBImpl extends TransactionalDBImpl<UserDB> implements Us
7778
}
7879

7980
protected createTransactionalDB(transactionalEM: EntityManager): UserDB {
80-
return new TypeORMUserDBImpl(this.encryptionService, this.cache, transactionalEM);
81+
return new TypeORMUserDBImpl(this.typeorm, this.encryptionService, this.cache, transactionalEM);
8182
}
8283

8384
async getUserRepo(): Promise<Repository<DBUser>> {
8485
return (await this.getEntityManager()).getRepository<DBUser>(DBUser);
8586
}
86-
protected async getWorkspaceRepo(): Promise<Repository<DBWorkspace>> {
87-
return (await this.getEntityManager()).getRepository<DBWorkspace>(DBWorkspace);
88-
}
8987

90-
protected async getTokenRepo(): Promise<Repository<DBTokenEntry>> {
88+
private async getTokenRepo(): Promise<Repository<DBTokenEntry>> {
9189
return (await this.getEntityManager()).getRepository<DBTokenEntry>(DBTokenEntry);
9290
}
9391

94-
protected async getIdentitiesRepo(): Promise<Repository<DBIdentity>> {
95-
return (await this.getEntityManager()).getRepository<DBIdentity>(DBIdentity);
96-
}
97-
98-
protected async getGitpodTokenRepo(): Promise<Repository<DBGitpodToken>> {
92+
private async getGitpodTokenRepo(): Promise<Repository<DBGitpodToken>> {
9993
return (await this.getEntityManager()).getRepository<DBGitpodToken>(DBGitpodToken);
10094
}
10195

102-
protected async getUserEnvVarRepo(): Promise<Repository<DBUserEnvVar>> {
96+
private async getUserEnvVarRepo(): Promise<Repository<DBUserEnvVar>> {
10397
return (await this.getEntityManager()).getRepository<DBUserEnvVar>(DBUserEnvVar);
10498
}
10599

106-
protected async getSSHPublicKeyRepo(): Promise<Repository<DBUserSshPublicKey>> {
100+
private async getSSHPublicKeyRepo(): Promise<Repository<DBUserSshPublicKey>> {
107101
return (await this.getEntityManager()).getRepository<DBUserSshPublicKey>(DBUserSshPublicKey);
108102
}
109103

0 commit comments

Comments
 (0)