/
project-store.ts
42 lines (37 loc) · 1.36 KB
/
project-store.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { IEnvironmentProjectLink } from '../../db/project-store';
import { IProject, IProjectWithCount } from '../model';
import { Store } from './store';
export interface IProjectInsert {
id: string;
name: string;
description: string;
updatedAt?: Date;
}
export interface IProjectArchived {
id: string;
archived: boolean;
}
export interface IProjectHealthUpdate {
id: string;
health: number;
}
export interface IProjectQuery {
id?: string;
}
export interface IProjectStore extends Store<IProject, string> {
hasProject(id: string): Promise<boolean>;
updateHealth(healthUpdate: IProjectHealthUpdate): Promise<void>;
create(project: IProjectInsert): Promise<IProject>;
update(update: IProjectInsert): Promise<void>;
importProjects(projects: IProjectInsert[]): Promise<IProject[]>;
addEnvironmentToProject(id: string, environment: string): Promise<void>;
deleteEnvironmentForProject(id: string, environment: string): Promise<void>;
getEnvironmentsForProject(id: string): Promise<string[]>;
getMembers(projectId: string): Promise<number>;
getProjectsWithCounts(query?: IProjectQuery): Promise<IProjectWithCount[]>;
count(): Promise<number>;
getAll(query?: IProjectQuery): Promise<IProject[]>;
getProjectLinksForEnvironments(
environments: string[],
): Promise<IEnvironmentProjectLink[]>;
}