/
process-deleted-projects.ts
91 lines (78 loc) · 2.66 KB
/
process-deleted-projects.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import { enums } from '../../barrels/enums';
import { helper } from '../../barrels/helper';
import { store } from '../../barrels/store';
import { MyRegex } from '../../models/my-regex';
import { ServerError } from '../../models/server-error';
import { In } from 'typeorm';
import { forEachSeries } from 'p-iteration';
import { disk } from '../../barrels/disk';
import { config } from '../../barrels/config';
export async function processDeletedProjects(projectIds: string[]) {
let storeMembers = store.getMembersRepo();
let storeRepos = store.getReposRepo();
let storeFiles = store.getFilesRepo();
let storeErrors = store.getErrorsRepo();
let storeModels = store.getModelsRepo();
let storeViews = store.getViewsRepo();
let storeMconfigs = store.getMconfigsRepo();
let storeDashboards = store.getDashboardsRepo();
let storeProjects = store.getProjectsRepo();
await storeMembers
.delete({
project_id: In(projectIds)
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_MEMBERS_DELETE));
await storeRepos
.delete({
project_id: In(projectIds)
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_REPOS_DELETE));
await storeFiles
.delete({
project_id: In(projectIds)
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_FILES_DELETE));
await storeErrors
.delete({
project_id: In(projectIds)
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_ERRORS_DELETE));
await storeDashboards
.delete({
project_id: In(projectIds)
})
.catch(e =>
helper.reThrow(e, enums.storeErrorsEnum.STORE_DASHBOARDS_DELETE)
);
await storeMconfigs
.delete({
project_id: In(projectIds)
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_MCONFIGS_DELETE));
await storeModels
.delete({
project_id: In([projectIds])
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_MODELS_DELETE));
await storeViews
.delete({
project_id: In([projectIds])
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_VIEWS_DELETE));
await storeProjects
.delete({
project_id: In(projectIds)
})
.catch(e => helper.reThrow(e, enums.storeErrorsEnum.STORE_PROJECTS_DELETE));
// disk
await forEachSeries(projectIds, async projectId => {
await disk
.removePath(`${config.DISK_BACKEND_PROJECTS_PATH}/${projectId}`)
.catch(e => helper.reThrow(e, enums.diskErrorsEnum.DISK_REMOVE_PATH));
await disk
.removePath(
`${config.DISK_BACKEND_BIGQUERY_CREDENTIALS_PATH}/${projectId}.json`
)
.catch(e => helper.reThrow(e, enums.diskErrorsEnum.DISK_REMOVE_PATH));
});
}