@@ -14,54 +14,21 @@ namespace service {
1414 co_return res;
1515 }
1616
17- Task<std::optional<ProjectIssueData>> Database::getProjectIssue (std::string id) const {
18- const auto [res, err] =
19- co_await handleDatabaseOperation<ProjectIssueData>([id](const DbClientPtr &client) -> Task<ProjectIssueData> {
20- CoroMapper<ProjectIssue> mapper (client);
21- const auto issue = co_await mapper.findByPrimaryKey (id);
22- co_return ProjectIssueData{.id = issue.getValueOfId (),
23- .project_id = issue.getValueOfProjectId (),
24- .level = issue.getValueOfLevel (),
25- .page_path = issue.getValueOfPagePath (),
26- .deployment_id = issue.getValueOfDeploymentId (),
27- .body = nlohmann::json::parse (issue.getValueOfBody ()),
28- .created_at = issue.getValueOfCreatedAt ().toCustomFormattedString (" %Y-%m-%d" )};
29- });
30- co_return res;
31- }
32-
33- Task<std::vector<ProjectIssue>> Database::getProjectIssues (std::string projectId) const {
17+ Task<std::vector<ProjectIssue>> Database::getDeploymentIssues (const std::string deploymentId) const {
3418 const auto [res, err] = co_await handleDatabaseOperation<std::vector<ProjectIssue>>(
35- [projectId ](const DbClientPtr &client) -> Task<std::vector<ProjectIssue>> {
19+ [deploymentId ](const DbClientPtr &client) -> Task<std::vector<ProjectIssue>> {
3620 CoroMapper<ProjectIssue> mapper (client);
3721 mapper.orderBy (" array_position(array['error', 'warning'], level)" );
38- co_return co_await mapper.findBy (Criteria (ProjectIssue::Cols::_project_id , CompareOperator::EQ, projectId ));
22+ co_return co_await mapper.findBy (Criteria (ProjectIssue::Cols::_deployment_id , CompareOperator::EQ, deploymentId ));
3923 });
4024 co_return res.value_or (std::vector<ProjectIssue>{});
4125 }
4226
43- Task<Error> Database::deleteProjectIssues (std::string projectId) const {
44- const auto [res, err] = co_await handleDatabaseOperation<Error>([projectId](const DbClientPtr &client) -> Task<Error> {
45- CoroMapper<ProjectIssue> mapper (client);
46- co_await mapper.deleteBy (Criteria (ProjectIssue::Cols::_project_id, CompareOperator::EQ, projectId));
47- co_return Error::Ok;
48- });
49- co_return res.value_or (err);
50- }
51-
52- Task<Error> Database::deleteDeploymentIssues (std::string deploymentId) const {
53- const auto [res, err] = co_await handleDatabaseOperation<Error>([deploymentId](const DbClientPtr &client) -> Task<Error> {
54- CoroMapper<ProjectIssue> mapper (client);
55- co_await mapper.deleteBy (Criteria (ProjectIssue::Cols::_deployment_id, CompareOperator::EQ, deploymentId));
56- co_return Error::Ok;
57- });
58- co_return res.value_or (err);
59- }
60-
61- Task<std::unordered_map<std::string, int64_t >> Database::getProjectIssueStats (std::string projectId) const {
27+ Task<std::unordered_map<std::string, int64_t >> Database::getActiveProjectIssueStats (std::string projectId) const {
6228 // language=postgresql
6329 static constexpr auto query = " SELECT level, count(level) AS count FROM project_issue \
6430 WHERE project_id = $1 \
31+ AND deployment_id = (SELECT id FROM deployment d WHERE d.project_id = $1 AND d.active) \
6532 GROUP BY level" ;
6633
6734 const auto [res, err] = co_await handleDatabaseOperation<std::unordered_map<std::string, int64_t >>(
0 commit comments