This is an automated email from the ASF dual-hosted git repository. klesh pushed a commit to branch kw-5519-remoteapi-dshelper in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 1162940de81fdc5a86a453109b403c2964678629 Merge: b35186ac6 0c79f340a Author: Klesh Wong <[email protected]> AuthorDate: Mon Jun 17 16:38:47 2024 +0800 Merge remote-tracking branch 'origin/main' into kw-5519-remoteapi-dshelper README.md | 2 +- backend/Makefile | 3 + .../pull_request_assignees.go} | 17 +- .../pull_request_reviewers.go} | 17 +- .../domainlayer/crossdomain/pull_request_issue.go | 2 +- .../models/domainlayer/domaininfo/domaininfo.go | 2 + backend/core/models/domainlayer/ticket/issue.go | 1 + ...ify_cicd_deployment_commits_repo_url_length.go} | 36 +- ...odify_cicd_pipeline_commits_repo_url_length.go} | 36 +- ...pdate_issue_key_type_in_pull_request_issues.go} | 38 +- ...ate_plugin_option_in_project_metric_settings.go | 69 ++ .../20240531_add_pr_assignees_and_reviewers.go} | 33 +- ..._pull_request_id_index_for_pr_comments_table.go | 46 ++ ...d_pull_request_id_index_for_pr_commits_table.go | 72 +++ ...240607_modify_pr_assignees_and_reviewers_id.go} | 38 +- .../archived/pull_request_assignees.go} | 27 +- .../archived/pull_request_reviewers.go} | 27 +- backend/core/models/migrationscripts/register.go | 8 + backend/core/models/pipeline.go | 3 - backend/core/models/project.go | 6 +- backend/core/plugin/hub.go | 8 +- backend/core/runner/loader.go | 20 +- backend/go.mod | 2 +- backend/go.sum | 2 + .../pluginhelper/api/ds_model_api_helper.go | 6 +- backend/plugins/azuredevops_go/e2e/build_test.go | 1 + .../e2e/snapshot_tables/cicd_pipeline_commits.csv | 14 +- .../azuredevops_go/tasks/ci_cd_build_converter.go | 19 +- backend/plugins/bamboo/impl/impl.go | 2 +- backend/plugins/bitbucket/api/remote_api.go | 8 + backend/plugins/bitbucket/impl/impl.go | 2 +- .../_tool_bitbucket_server_pull_requests.csv | 22 +- .../_tool_bitbucket_server_users_in_pr.csv | 4 +- .../e2e/snapshot_tables/pull_requests.csv | 22 +- .../plugins/bitbucket_server/tasks/pr_collector.go | 8 +- .../bitbucket_server/tasks/pr_commit_collector.go | 1 + .../plugins/bitbucket_server/tasks/pr_extractor.go | 8 +- .../plugins/bitbucket_server/tasks/task_data.go | 12 + backend/plugins/circleci/impl/impl.go | 2 +- .../plugins/customize/e2e/extract_fields_test.go | 130 +++- .../e2e/raw_tables/_raw_jira_api_issues.csv | 34 +- .../plugins/customize/e2e/raw_tables/issues.csv | 34 +- .../issues_for_data_extraction_board8.csv | 31 + .../issues_for_data_extraction_board9.csv | 31 + ...csv => issues_for_data_extraction_wildcard.csv} | 34 +- .../customize/tasks/customized_fields_extractor.go | 2 +- .../e2e/change_lead_time/project_pr_metrics.csv | 8 +- backend/plugins/dora/impl/impl.go | 9 +- .../dora/tasks/change_lead_time_calculator.go | 17 +- backend/plugins/gitee/tasks/pr_issue_convertor.go | 3 +- .../plugins/gitextractor/parser/clone_gitcli.go | 3 +- .../plugins/github/tasks/account_org_collector.go | 6 + backend/plugins/github/tasks/pr_issue_convertor.go | 3 +- backend/plugins/github_graphql/impl/impl.go | 11 +- backend/plugins/gitlab/api/blueprint_V200_test.go | 28 +- backend/plugins/gitlab/api/blueprint_v200.go | 22 +- backend/plugins/gitlab/api/init.go | 2 + backend/plugins/gitlab/e2e/mr_commits_test.go | 2 + backend/plugins/gitlab/impl/impl.go | 1 + .../gitlab/models/{reviewer.go => assignee.go} | 13 +- .../migrationscripts/20240531_add_mr_assignees.go} | 42 +- ...5_add_mr_assignees_and_reviewers_primary_key.go | 88 +++ .../archived/{reviewer.go => assignee.go} | 11 +- .../models/migrationscripts/archived/reviewer.go | 5 +- .../gitlab/models/migrationscripts/register.go | 2 + backend/plugins/gitlab/models/reviewer.go | 7 +- .../plugins/gitlab/tasks/mr_assignee_convertor.go | 91 +++ .../plugins/gitlab/tasks/mr_detail_extractor.go | 17 +- backend/plugins/gitlab/tasks/mr_extractor.go | 29 +- .../plugins/gitlab/tasks/mr_reviewer_convertor.go | 91 +++ .../register.go => issue_trace/api/init.go} | 23 +- .../e2e/general_issue_assignee_history_test.go | 52 ++ .../e2e/general_issue_status_history_test.go | 53 ++ .../register.go => issue_trace/e2e/meta.go} | 24 +- .../issue_trace/e2e/raw_tables/board_issues.csv | 33 + .../e2e/raw_tables/issue_changelogs.csv | 694 +++++++++++++++++++++ .../plugins/issue_trace/e2e/raw_tables/issues.csv | 33 + .../e2e/snapshot_tables/issue_assignee_history.csv | 43 ++ .../e2e/snapshot_tables/issue_status_history.csv | 201 ++++++ backend/plugins/issue_trace/impl/enricher.go | 179 ++++++ backend/plugins/issue_trace/issue_trace.go | 48 ++ .../models/issue_assignee_history.go} | 25 +- .../models/issue_status_history.go} | 29 +- .../migrationscripts/2024_05_30_new_issue_table.go | 70 +++ .../register.go => issue_trace/services/query.go} | 24 +- .../tasks/issue_assignee_history_convertor.go | 299 +++++++++ .../tasks/issue_status_history_convertor.go | 275 ++++++++ .../tasks/issue_status_history_convertor_test.go} | 42 +- .../register.go => issue_trace/tasks/task_data.go} | 28 +- backend/plugins/issue_trace/utils/array.go | 62 ++ .../register.go => issue_trace/utils/constant.go} | 20 +- .../register.go => issue_trace/utils/context.go} | 21 +- .../_tool_jira_issues_for_external_epics.csv | 8 +- .../plugins/jira/e2e/snapshot_tables/issues.csv | 24 +- backend/plugins/jira/models/issue.go | 1 + .../20240611_add_subtask_to_issue.go} | 40 +- .../jira/models/migrationscripts/register.go | 1 + .../jira/tasks/issue_changelog_collector.go | 2 +- .../jira/tasks/issue_changelog_convertor.go | 2 +- .../jira/tasks/issue_changelog_extractor.go | 2 +- backend/plugins/jira/tasks/issue_convertor.go | 3 + backend/plugins/jira/tasks/issue_extractor.go | 4 + .../register.go => linker/README.md} | 20 - .../plugins/linker/e2e/link_pr_and_issue_test.go | 71 +++ .../linker/e2e/snapshot_tables/board_issues.csv | 3 + .../plugins/linker/e2e/snapshot_tables/issues.csv | 5 + .../linker/e2e/snapshot_tables/project_mapping.csv | 3 + .../e2e/snapshot_tables/pull_request_issues.csv | 3 + .../linker/e2e/snapshot_tables/pull_requests.csv | 2 + backend/plugins/linker/impl/impl.go | 127 ++++ .../register.go => linker/linker.go} | 32 +- .../models/migrationscripts/register.go | 11 +- backend/plugins/linker/tasks/link_pr_and_issue.go | 142 +++++ .../reviewer.go => linker/tasks/task_data.go} | 33 +- ...dd_new_fields_to_tool_opsgenie_scope_configs.go | 48 ++ .../opsgenie/models/migrationscripts/register.go | 1 + ...d_new_fields_to_tool_pagerduty_scope_configs.go | 48 ++ .../pagerduty/models/migrationscripts/register.go | 1 + backend/plugins/pagerduty/models/service.go | 2 +- backend/plugins/pagerduty/tasks/task_data.go | 3 - ...20240614_update_tool_sonarqube_scope_configs.go | 48 ++ .../sonarqube/models/migrationscripts/register.go | 1 + backend/plugins/starrocks/tasks/tasks.go | 7 +- backend/plugins/table_info_test.go | 4 + backend/plugins/tapd/api/blueprint_v200.go | 2 +- backend/plugins/tapd/impl/impl.go | 2 +- backend/plugins/trello/impl/impl.go | 2 +- backend/plugins/webhook/api/deployments.go | 297 +++++---- .../plugins/webhook/api/{incident.go => issues.go} | 32 +- backend/plugins/webhook/impl/impl.go | 4 +- backend/plugins/zentao/api/remote_api.go | 11 +- backend/plugins/zentao/impl/impl.go | 8 +- .../plugins/zentao/tasks/execution_collector.go | 5 +- ...ector.go => execution_summary_dev_collector.go} | 64 +- ...ector.go => execution_summary_dev_extractor.go} | 72 +-- .../plugins/azuredevops/azuredevops/migrations.py | 44 +- .../plugins/gerrit/README.md} | 24 +- backend/python/plugins/gerrit/build.sh | 20 + backend/python/plugins/gerrit/gerrit/__init__.py | 14 + backend/python/plugins/gerrit/gerrit/api.py | 120 ++++ backend/python/plugins/gerrit/gerrit/main.py | 117 ++++ backend/python/plugins/gerrit/gerrit/migrations.py | 70 +++ backend/python/plugins/gerrit/gerrit/models.py | 76 +++ .../gerrit/gerrit/streams/change_commits.py | 47 ++ .../plugins/gerrit/gerrit/streams/changes.py | 111 ++++ backend/python/plugins/gerrit/poetry.lock | 651 +++++++++++++++++++ backend/python/plugins/gerrit/pyproject.toml | 31 + backend/python/plugins/gerrit/run.sh | 20 + backend/python/plugins/gerrit/tests/__init__.py | 14 + backend/python/plugins/gerrit/tests/plugin_test.py | 42 ++ backend/python/plugins/gerrit/tests/stream_test.py | 126 ++++ backend/python/pydevlake/pydevlake/model.py | 2 +- backend/scripts/build-plugins.sh | 2 +- backend/server/services/blueprint.go | 2 +- backend/server/services/pipeline.go | 44 +- backend/server/services/project.go | 32 +- backend/test/helper/api.go | 4 +- config-ui/src/components/block/index.tsx | 2 +- .../src/components/tooltip/help-tooltip/index.tsx | 5 +- .../connection-form/fields/secret-key.tsx | 19 +- .../components/connection-form/fields/token.tsx | 2 +- .../src/plugins/components/scope-config/index.tsx | 23 +- .../src/plugins/register/gerrit/assets/icon.svg | 19 + config-ui/src/plugins/register/gerrit/config.tsx | 57 ++ .../register/gerrit/index.ts} | 12 +- .../register/github/connection-fields/token.tsx | 2 +- config-ui/src/plugins/register/index.ts | 2 + .../register/jira/connection-fields/auth.tsx | 11 +- .../register/webhook/components/create-dialog.tsx | 20 +- .../plugins/register/webhook/components/utils.ts | 56 ++ .../register/webhook/components/view-dialog.tsx | 30 +- .../routes/blueprint/connection-detail/index.tsx | 2 +- config-ui/src/routes/connection/connection.tsx | 6 +- .../src/routes/project/detail/settings-panel.tsx | 110 +++- config-ui/src/types/project.ts | 2 +- grafana/dashboards/EngineeringOverview.json | 4 +- 176 files changed, 5976 insertions(+), 953 deletions(-) diff --cc backend/helpers/pluginhelper/api/ds_model_api_helper.go index 50134b3a2,3e35a7c5d..229b6ea7e --- a/backend/helpers/pluginhelper/api/ds_model_api_helper.go +++ b/backend/helpers/pluginhelper/api/ds_model_api_helper.go @@@ -64,9 -63,9 +64,9 @@@ func NewAnyModelApiHelper return modelApiHelper } -func (self *ModelApiHelper[M]) Post(input *plugin.ApiResourceInput) (*plugin.ApiResourceOutput, errors.Error) { - model := new(M) +func (modelApi *AnyModelApiHelper) Post(input *plugin.ApiResourceInput) (*plugin.ApiResourceOutput, errors.Error) { + model := modelApi.New() - err := utils.DecodeMapStruct(input.Body, model, false) + err := DecodeMapStruct(input.Body, model, false) if err != nil { return nil, err } @@@ -149,9 -145,9 +149,9 @@@ func (modelApi *AnyModelApiHelper) Patc return nil, err } } else { - err = utils.DecodeMapStruct(input.Body, model, zeroFields) + err = DecodeMapStruct(input.Body, model, zeroFields) if err != nil { - return nil, errors.BadInput.Wrap(err, fmt.Sprintf("faled to patch %s", self.modelName)) + return nil, errors.BadInput.Wrap(err, fmt.Sprintf("faled to patch %s", modelApi.modelName)) } } return model, nil @@@ -194,11 -190,11 +194,11 @@@ func (modelApi *AnyModelApiHelper) GetA }, err } -func (self *ModelApiHelper[M]) PutMultipleCb(input *plugin.ApiResourceInput, beforeSave func(*M) errors.Error) (*plugin.ApiResourceOutput, errors.Error) { +func (modelApi *AnyModelApiHelper) PutMultipleCb(input *plugin.ApiResourceInput, beforeSave func(any) errors.Error) (*plugin.ApiResourceOutput, errors.Error) { var req struct { - Data []*M `json:"data"` + Data []any `json:"data"` } - err := utils.DecodeMapStruct(input.Body, &req, false) + err := DecodeMapStruct(input.Body, &req, false) if err != nil { return nil, err }
