Path: blob/main/components/gitpod-db/src/project-db.ts
2498 views
/**1* Copyright (c) 2021 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { PartialProject, Project, ProjectEnvVar, ProjectEnvVarWithValue, ProjectUsage } from "@gitpod/gitpod-protocol";7import { TransactionalDB } from "./typeorm/transactional-db-impl";89export const ProjectDB = Symbol("ProjectDB");10export interface ProjectDB extends TransactionalDB<ProjectDB> {11findProjectById(projectId: string): Promise<Project | undefined>;12findProjectsByCloneUrl(cloneUrl: string, organizationId?: string): Promise<Project[]>;13findProjects(orgID: string, limit?: number): Promise<Project[]>;14findProjectsBySearchTerm(args: FindProjectsBySearchTermArgs): Promise<{ total: number; rows: Project[] }>;15storeProject(project: Project): Promise<Project>;16updateProject(partialProject: PartialProject): Promise<Project>;17markDeleted(projectId: string): Promise<void>;18findProjectEnvironmentVariableByName(projectId: string, name: string): Promise<ProjectEnvVar | undefined>;19addProjectEnvironmentVariable(projectId: string, envVar: ProjectEnvVarWithValue): Promise<ProjectEnvVar>;20updateProjectEnvironmentVariable(21projectId: string,22envVar: Partial<ProjectEnvVarWithValue>,23): Promise<ProjectEnvVar | undefined>;24getProjectEnvironmentVariables(projectId: string): Promise<ProjectEnvVar[]>;25getProjectEnvironmentVariableById(variableId: string): Promise<ProjectEnvVar | undefined>;26deleteProjectEnvironmentVariable(variableId: string): Promise<void>;27getProjectEnvironmentVariableValues(28envVars: Pick<ProjectEnvVar, "id" | "projectId">[],29): Promise<ProjectEnvVarWithValue[]>;30findCachedProjectOverview(projectId: string): Promise<Project.Overview | undefined>;31storeCachedProjectOverview(projectId: string, overview: Project.Overview): Promise<void>;32getProjectUsage(projectId: string): Promise<ProjectUsage | undefined>;33updateProjectUsage(projectId: string, usage: Partial<ProjectUsage>): Promise<void>;34}3536export type FindProjectsBySearchTermArgs = {37offset: number;38limit: number;39orderBy: keyof Project;40orderDir: "ASC" | "DESC";41searchTerm?: string;42organizationId?: string;43prebuildsEnabled?: boolean;44};454647