/** * Copyright (c) 2021 Gitpod GmbH. All rights reserved. * Licensed under the GNU Affero General Public License (AGPL). * See License.AGPL.txt in the project root for license information. */ import { Team, TeamMemberInfo, TeamMemberRole, TeamMembershipInvite } from "@gitpod/gitpod-protocol"; import { DBTeamMembership } from "./typeorm/entity/db-team-membership"; export const TeamDB = Symbol("TeamDB"); export interface TeamDB { findTeams( offset: number, limit: number, orderBy: keyof Team, orderDir: "ASC" | "DESC", searchTerm: string, ): Promise<{ total: number; rows: Team[] }>; findTeamById(teamId: string): Promise; findTeamByMembershipId(membershipId: string): Promise; findMembersByTeam(teamId: string): Promise; findTeamMembership(userId: string, teamId: string): Promise; findTeamsByUser(userId: string): Promise; findTeamsByUserAsSoleOwner(userId: string): Promise; createTeam(userId: string, name: string): Promise; updateTeam(teamId: string, team: Pick): Promise; addMemberToTeam(userId: string, teamId: string): Promise<"added" | "already_member">; setTeamMemberRole(userId: string, teamId: string, role: TeamMemberRole): Promise; setTeamMemberSubscription(userId: string, teamId: string, subscriptionId: string): Promise; removeMemberFromTeam(userId: string, teamId: string): Promise; findTeamMembershipInviteById(inviteId: string): Promise; findGenericInviteByTeamId(teamId: string): Promise; resetGenericInvite(teamId: string): Promise; deleteTeam(teamId: string): Promise; }