Skip to content

Commit 4622aea

Browse files
committed
[db] DBTeamMembership: drop deleted column (unused)
1 parent cd79cf3 commit 4622aea

File tree

4 files changed

+35
-19
lines changed

4 files changed

+35
-19
lines changed

components/gitpod-db/src/tables.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,6 @@ export class GitpodTableDescriptionProvider implements TableDescriptionProvider
6868
deletionColumn: "deleted",
6969
timeColumn: "_lastModified",
7070
},
71-
{
72-
name: "d_b_team_membership",
73-
primaryKeys: ["id"],
74-
deletionColumn: "deleted",
75-
timeColumn: "_lastModified",
76-
},
7771
{
7872
name: "d_b_team_membership_invite",
7973
primaryKeys: ["id"],

components/gitpod-db/src/typeorm/entity/db-team-membership.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,4 @@ export class DBTeamMembership {
2727

2828
@Column("varchar")
2929
creationTime: string;
30-
31-
// This column triggers the periodic deleter deletion mechanism. It's not intended for public consumption.
32-
@Column()
33-
deleted: boolean;
3430
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Copyright (c) 2023 Gitpod GmbH. All rights reserved.
3+
* Licensed under the GNU Affero General Public License (AGPL).
4+
* See License.AGPL.txt in the project root for license information.
5+
*/
6+
7+
import { MigrationInterface, QueryRunner } from "typeorm";
8+
import { columnExists } from "./helper/helper";
9+
10+
const TABLE_NAME = "d_b_team_membership";
11+
const COLUMN_NAME = "deleted";
12+
13+
export class TeamMembershipDropDeleted1695821464987 implements MigrationInterface {
14+
public async up(queryRunner: QueryRunner): Promise<void> {
15+
if (await columnExists(queryRunner, TABLE_NAME, COLUMN_NAME)) {
16+
await queryRunner.query(`ALTER TABLE \`${TABLE_NAME}\` DROP COLUMN \`${COLUMN_NAME}\`, ALGORITHM=INSTANT`);
17+
}
18+
}
19+
20+
public async down(queryRunner: QueryRunner): Promise<void> {
21+
if (!(await columnExists(queryRunner, TABLE_NAME, COLUMN_NAME))) {
22+
await queryRunner.query(
23+
`ALTER TABLE \`${TABLE_NAME}\` ADD COLUMN \`${COLUMN_NAME}\` tinyint(4) NOT NULL DEFAULT '0', ALGORITHM=INSTANT`,
24+
);
25+
}
26+
}
27+
}

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
8989

9090
public async findTeamByMembershipId(membershipId: string): Promise<Team | undefined> {
9191
const membershipRepo = await this.getMembershipRepo();
92-
const membership = await membershipRepo.findOne({ id: membershipId, deleted: false });
92+
const membership = await membershipRepo.findOne({ id: membershipId });
9393
if (!membership) {
9494
return;
9595
}
@@ -99,7 +99,7 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
9999
public async findMembersByTeam(teamId: string): Promise<TeamMemberInfo[]> {
100100
const membershipRepo = await this.getMembershipRepo();
101101
const userRepo = await this.getUserRepo();
102-
const memberships = await membershipRepo.find({ teamId, deleted: false });
102+
const memberships = await membershipRepo.find({ teamId });
103103
const users = await userRepo.findByIds(memberships.map((m) => m.userId));
104104
const infos = users.map((u) => {
105105
const m = memberships.find((m) => m.userId === u.id)!;
@@ -118,13 +118,13 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
118118

119119
public async findTeamMembership(userId: string, teamId: string): Promise<DBTeamMembership | undefined> {
120120
const membershipRepo = await this.getMembershipRepo();
121-
return membershipRepo.findOne({ userId, teamId, deleted: false });
121+
return membershipRepo.findOne({ userId, teamId });
122122
}
123123

124124
public async findTeamsByUser(userId: string): Promise<Team[]> {
125125
const teamRepo = await this.getTeamRepo();
126126
const membershipRepo = await this.getMembershipRepo();
127-
const memberships = await membershipRepo.find({ userId, deleted: false });
127+
const memberships = await membershipRepo.find({ userId });
128128
const teams = await teamRepo.findByIds(memberships.map((m) => m.teamId));
129129
return teams.filter((t) => !t.markedDeleted);
130130
}
@@ -256,7 +256,7 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
256256

257257
private async deleteOrgSettings(orgId: string): Promise<void> {
258258
const orgSettingsRepo = await this.getOrgSettingsRepo();
259-
const orgSettings = await orgSettingsRepo.findOne({ where: { orgId, deleted: false } });
259+
const orgSettings = await orgSettingsRepo.findOne({ where: { orgId } });
260260
if (orgSettings) {
261261
orgSettings.deleted = true;
262262
orgSettingsRepo.save(orgSettings);
@@ -270,7 +270,7 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
270270
throw new ApplicationError(ErrorCodes.NOT_FOUND, "An organization with this ID could not be found");
271271
}
272272
const membershipRepo = await this.getMembershipRepo();
273-
const membership = await membershipRepo.findOne({ teamId, userId, deleted: false });
273+
const membership = await membershipRepo.findOne({ teamId, userId });
274274
if (!!membership) {
275275
// already a member, this is the desired outcome
276276
return "already_member";
@@ -297,15 +297,14 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
297297
const allOwners = await membershipRepo.find({
298298
teamId,
299299
role: "owner",
300-
deleted: false,
301300
});
302301
const otherOwnerCount = allOwners.filter((m) => m.userId != userId).length;
303302
if (otherOwnerCount === 0) {
304303
throw new ApplicationError(ErrorCodes.CONFLICT, "An organization must retain at least one owner");
305304
}
306305
}
307306

308-
const membership = await membershipRepo.findOne({ teamId, userId, deleted: false });
307+
const membership = await membershipRepo.findOne({ teamId, userId });
309308
if (!membership) {
310309
throw new ApplicationError(ErrorCodes.NOT_FOUND, "The user is not currently a member of this organization");
311310
}
@@ -320,7 +319,7 @@ export class TeamDBImpl extends TransactionalDBImpl<TeamDB> implements TeamDB {
320319
throw new ApplicationError(ErrorCodes.NOT_FOUND, "An organization with this ID could not be found");
321320
}
322321
const membershipRepo = await this.getMembershipRepo();
323-
const membership = await membershipRepo.findOne({ teamId, userId, deleted: false });
322+
const membership = await membershipRepo.findOne({ teamId, userId });
324323
if (!membership) {
325324
throw new ApplicationError(
326325
ErrorCodes.BAD_REQUEST,

0 commit comments

Comments
 (0)