This is an automated email from the ASF dual-hosted git repository. warren pushed a commit to branch feat-plugin-zentao in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 8f3ff2c706b7cdb4ca6691b159bde4faeee3545b Author: yuqiangabab <[email protected]> AuthorDate: Sun Oct 2 11:20:52 2022 +0800 fix:apiurl&model error --- plugins/zentao/models/archived/stories.go | 116 +++++++----------------------- plugins/zentao/models/stories.go | 116 +++++++----------------------- plugins/zentao/tasks/stories_collector.go | 12 +++- plugins/zentao/tasks/stories_convertor.go | 18 ++--- plugins/zentao/tasks/stories_extractor.go | 5 +- plugins/zentao/tasks/task_data.go | 1 - plugins/zentao/zentao.go | 2 - 7 files changed, 75 insertions(+), 195 deletions(-) diff --git a/plugins/zentao/models/archived/stories.go b/plugins/zentao/models/archived/stories.go index cd608682..d197e1fd 100644 --- a/plugins/zentao/models/archived/stories.go +++ b/plugins/zentao/models/archived/stories.go @@ -25,11 +25,16 @@ import ( type ZentaoStories struct { archived.NoPKModel ConnectionId uint64 `gorm:"primaryKey;type:BIGINT NOT NULL"` - ID int `json:"id"gorm:"primaryKey;type:BIGINT NOT NULL"` - Vision string `json:"vision"` - Parent int `json:"parent"` + ExecutionId uint64 `json:"execution_id"` + Project int `json:"project"` Product int `json:"product"` Branch int `json:"branch"` + Story int `json:"story"` + Version int `json:"version"` + Order int `json:"order"` + ID int `json:"id" gorm:"primaryKey;type:BIGINT NOT NULL" ` + Vision string `json:"vision"` + Parent int `json:"parent"` Module int `json:"module"` Plan string `json:"plan"` Source string `json:"source"` @@ -47,20 +52,20 @@ type ZentaoStories struct { Color string `json:"color"` Stage string `json:"stage"` StagedBy string `json:"stagedBy"` - //Mailto []interface{} `json:"mailto" gorm:"-:all"` - Lib int `json:"lib"` - FromStory int `json:"fromStory"` - FromVersion int `json:"fromVersion"` - OpenedBy `json:"openedBy"` - OpenedDate *helper.Iso8601Time `json:"openedDate"` - AssignedTo `json:"assignedTo"` - AssignedDate *helper.Iso8601Time `json:"assignedDate"` - ApprovedDate string `json:"approvedDate"` - LastEditedBy `json:"lastEditedBy"` - LastEditedDate *helper.Iso8601Time `json:"lastEditedDate"` - ChangedBy string `json:"changedBy"` - ChangedDate string `json:"changedDate"` - ReviewedBy interface{} `json:"reviewedBy" gorm:"-:all"` + //Mailto []interface{} `json:"mailto"` + Lib int `json:"lib"` + FromStory int `json:"fromStory"` + FromVersion int `json:"fromVersion"` + OpenedBy `json:"openedBy"` + OpenedDate *helper.Iso8601Time `json:"openedDate"` + AssignedTo `json:"assignedTo"` + AssignedDate *helper.Iso8601Time `json:"assignedDate"` + ApprovedDate string `json:"approvedDate"` + LastEditedBy `json:"lastEditedBy"` + LastEditedDate *helper.Iso8601Time `json:"lastEditedDate"` + ChangedBy string `json:"changedBy"` + ChangedDate string `json:"changedDate"` + //ReviewedBy interface{} `json:"reviewedBy"` ReviewedDate *helper.Iso8601Time `json:"reviewedDate"` ClosedBy `json:"closedBy"` ClosedDate *helper.Iso8601Time `json:"closedDate"` @@ -71,81 +76,17 @@ type ZentaoStories struct { LinkStories string `json:"linkStories"` LinkRequirements string `json:"linkRequirements"` DuplicateStory int `json:"duplicateStory"` - Version int `json:"version"` StoryChanged string `json:"storyChanged"` FeedbackBy string `json:"feedbackBy"` NotifyEmail string `json:"notifyEmail"` URChanged string `json:"URChanged"` Deleted bool `json:"deleted"` - Spec string `json:"spec"` - Verify string `json:"verify"` - Executions Executions `json:"executions" gorm:"-:all"` - Tasks []Tasks `json:"tasks" gorm:"-:all"` - //Stages []interface{} `json:"stages" gorm:"-:all"` - PlanTitle []string `json:"planTitle" gorm:"-:all"` - //Children []interface{} `json:"children" gorm:"-:all"` - //Files []interface{} `json:"files" gorm:"-:all"` - ProductName string `json:"productName"` - ProductStatus string `json:"productStatus"` - ModuleTitle string `json:"moduleTitle"` - Bugs []Bugs `json:"bugs" gorm:"-:all"` - Cases []Cases `json:"cases" gorm:"-:all"` - //Requirements []interface{} `json:"requirements" gorm:"-:all"` - Actions []Actions `json:"actions" gorm:"-:all"` - PreAndNext `json:"preAndNext"` -} -type Executions struct { - Num1 struct { - Project int `json:"project"` - Name string `json:"name"` - Status string `json:"status"` - Type string `json:"type"` - } `json:"1"` -} -type Tasks struct { - ID int `json:"id"` - Name string `json:"name"` - Type string `json:"type"` - Status string `json:"status"` - AssignedTo struct { - ID int `json:"id"` - Account string `json:"account"` - Avatar string `json:"avatar"` - Realname string `json:"realname"` - } `json:"assignedTo"` -} -type Bugs struct { - ID int `json:"id"` - Title string `json:"title"` - Status string `json:"status"` - Pri int `json:"pri"` - Severity int `json:"severity"` -} -type Cases struct { - ID int `json:"id"` - Title string `json:"title"` - Pri int `json:"pri"` - Status string `json:"status"` + PriOrder string `json:"priOrder"` + ProductType string `json:"productType"` + PlanTitle string `json:"planTitle"` + ProductStatus string `json:"productStatus"` } -type Actions struct { - ID int `json:"id"` - ObjectType string `json:"objectType"` - ObjectID int `json:"objectID"` - Product string `json:"product"` - Project int `json:"project"` - Execution int `json:"execution"` - Actor string `json:"actor"` - Action string `json:"action"` - Date string `json:"date"` - Comment string `json:"comment"` - Extra string `json:"extra"` - Read string `json:"read"` - Vision string `json:"vision"` - Efforted int `json:"efforted"` - //History []interface{} `json:"history"` - Desc string `json:"desc"` -} type AssignedTo struct { ID int `json:"id"` Account string `json:"account"` @@ -153,11 +94,6 @@ type AssignedTo struct { Realname string `json:"realname"` } -type PreAndNext struct { - Pre string `json:"pre"` - Next string `json:"next"` -} - func (ZentaoStories) TableName() string { return "_tool_zentao_stories" } diff --git a/plugins/zentao/models/stories.go b/plugins/zentao/models/stories.go index be198bbf..1d65c111 100644 --- a/plugins/zentao/models/stories.go +++ b/plugins/zentao/models/stories.go @@ -25,11 +25,16 @@ import ( type ZentaoStories struct { common.NoPKModel ConnectionId uint64 `gorm:"primaryKey;type:BIGINT NOT NULL"` - ID int `json:"id"gorm:"primaryKey;type:BIGINT NOT NULL"` - Vision string `json:"vision"` - Parent int `json:"parent"` + ExecutionId uint64 `json:"execution_id"` + Project int `json:"project"` Product int `json:"product"` Branch int `json:"branch"` + Story int `json:"story"` + Version int `json:"version"` + Order int `json:"order"` + ID int `json:"id" gorm:"primaryKey;type:BIGINT NOT NULL" ` + Vision string `json:"vision"` + Parent int `json:"parent"` Module int `json:"module"` Plan string `json:"plan"` Source string `json:"source"` @@ -47,20 +52,20 @@ type ZentaoStories struct { Color string `json:"color"` Stage string `json:"stage"` StagedBy string `json:"stagedBy"` - //Mailto []interface{} `json:"mailto" gorm:"-:all"` - Lib int `json:"lib"` - FromStory int `json:"fromStory"` - FromVersion int `json:"fromVersion"` - OpenedBy `json:"openedBy"` - OpenedDate *helper.Iso8601Time `json:"openedDate"` - AssignedTo `json:"assignedTo"` - AssignedDate *helper.Iso8601Time `json:"assignedDate"` - ApprovedDate string `json:"approvedDate"` - LastEditedBy `json:"lastEditedBy"` - LastEditedDate *helper.Iso8601Time `json:"lastEditedDate"` - ChangedBy string `json:"changedBy"` - ChangedDate string `json:"changedDate"` - ReviewedBy interface{} `json:"reviewedBy" gorm:"-:all"` + //Mailto []interface{} `json:"mailto"` + Lib int `json:"lib"` + FromStory int `json:"fromStory"` + FromVersion int `json:"fromVersion"` + OpenedBy `json:"openedBy"` + OpenedDate *helper.Iso8601Time `json:"openedDate"` + AssignedTo `json:"assignedTo"` + AssignedDate *helper.Iso8601Time `json:"assignedDate"` + ApprovedDate string `json:"approvedDate"` + LastEditedBy `json:"lastEditedBy"` + LastEditedDate *helper.Iso8601Time `json:"lastEditedDate"` + ChangedBy string `json:"changedBy"` + ChangedDate string `json:"changedDate"` + //ReviewedBy interface{} `json:"reviewedBy"` ReviewedDate *helper.Iso8601Time `json:"reviewedDate"` ClosedBy `json:"closedBy"` ClosedDate *helper.Iso8601Time `json:"closedDate"` @@ -71,81 +76,17 @@ type ZentaoStories struct { LinkStories string `json:"linkStories"` LinkRequirements string `json:"linkRequirements"` DuplicateStory int `json:"duplicateStory"` - Version int `json:"version"` StoryChanged string `json:"storyChanged"` FeedbackBy string `json:"feedbackBy"` NotifyEmail string `json:"notifyEmail"` URChanged string `json:"URChanged"` Deleted bool `json:"deleted"` - Spec string `json:"spec"` - Verify string `json:"verify"` - Executions Executions `json:"executions" gorm:"-:all"` - Tasks []Tasks `json:"tasks" gorm:"-:all"` - //Stages []interface{} `json:"stages" gorm:"-:all"` - PlanTitle []string `json:"planTitle" gorm:"-:all"` - //Children []interface{} `json:"children" gorm:"-:all"` - //Files []interface{} `json:"files" gorm:"-:all"` - ProductName string `json:"productName"` - ProductStatus string `json:"productStatus"` - ModuleTitle string `json:"moduleTitle"` - Bugs []Bugs `json:"bugs" gorm:"-:all"` - Cases []Cases `json:"cases" gorm:"-:all"` - //Requirements []interface{} `json:"requirements" gorm:"-:all"` - Actions []Actions `json:"actions" gorm:"-:all"` - PreAndNext `json:"preAndNext"` -} -type Executions struct { - Num1 struct { - Project int `json:"project"` - Name string `json:"name"` - Status string `json:"status"` - Type string `json:"type"` - } `json:"1"` -} -type Tasks struct { - ID int `json:"id"` - Name string `json:"name"` - Type string `json:"type"` - Status string `json:"status"` - AssignedTo struct { - ID int `json:"id"` - Account string `json:"account"` - Avatar string `json:"avatar"` - Realname string `json:"realname"` - } `json:"assignedTo"` -} -type Bugs struct { - ID int `json:"id"` - Title string `json:"title"` - Status string `json:"status"` - Pri int `json:"pri"` - Severity int `json:"severity"` -} -type Cases struct { - ID int `json:"id"` - Title string `json:"title"` - Pri int `json:"pri"` - Status string `json:"status"` + PriOrder string `json:"priOrder"` + ProductType string `json:"productType"` + PlanTitle string `json:"planTitle"` + ProductStatus string `json:"productStatus"` } -type Actions struct { - ID int `json:"id"` - ObjectType string `json:"objectType"` - ObjectID int `json:"objectID"` - Product string `json:"product"` - Project int `json:"project"` - Execution int `json:"execution"` - Actor string `json:"actor"` - Action string `json:"action"` - Date string `json:"date"` - Comment string `json:"comment"` - Extra string `json:"extra"` - Read string `json:"read"` - Vision string `json:"vision"` - Efforted int `json:"efforted"` - //History []interface{} `json:"history"` - Desc string `json:"desc"` -} type AssignedTo struct { ID int `json:"id"` Account string `json:"account"` @@ -153,11 +94,6 @@ type AssignedTo struct { Realname string `json:"realname"` } -type PreAndNext struct { - Pre string `json:"pre"` - Next string `json:"next"` -} - func (ZentaoStories) TableName() string { return "_tool_zentao_stories" } diff --git a/plugins/zentao/tasks/stories_collector.go b/plugins/zentao/tasks/stories_collector.go index 6ba58924..26c004c8 100644 --- a/plugins/zentao/tasks/stories_collector.go +++ b/plugins/zentao/tasks/stories_collector.go @@ -37,7 +37,9 @@ func CollectStories(taskCtx core.SubTaskContext) error { RawDataSubTaskArgs: helper.RawDataSubTaskArgs{ Ctx: taskCtx, Params: ZentaoApiParams{ - StoriesId: data.Options.StoriesId, + ProductId: data.Options.ProductId, + ExecutionId: data.Options.ExecutionId, + ProjectId: data.Options.ProjectId, }, Table: RAW_STORIES_TABLE, }, @@ -45,7 +47,7 @@ func CollectStories(taskCtx core.SubTaskContext) error { Incremental: false, PageSize: 100, // TODO write which api would you want request - UrlTemplate: "/stories/{{ .Params.StoriesId }}", + UrlTemplate: "/executions/{{ .Params.ExecutionId }}/stories", Query: func(reqData *helper.RequestData) (url.Values, error) { query := url.Values{} query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page)) @@ -54,12 +56,16 @@ func CollectStories(taskCtx core.SubTaskContext) error { }, GetTotalPages: GetTotalPagesFromResponse, ResponseParser: func(res *http.Response) ([]json.RawMessage, error) { + var data struct { + Stories []json.RawMessage `json:"stories"` + } body, err := io.ReadAll(res.Body) + json.Unmarshal(body, &data) res.Body.Close() if err != nil { return nil, err } - return []json.RawMessage{body}, nil + return data.Stories, nil }, }) if err != nil { diff --git a/plugins/zentao/tasks/stories_convertor.go b/plugins/zentao/tasks/stories_convertor.go index a41a1868..b9d80724 100644 --- a/plugins/zentao/tasks/stories_convertor.go +++ b/plugins/zentao/tasks/stories_convertor.go @@ -44,8 +44,8 @@ func ConvertStories(taskCtx core.SubTaskContext) error { boardIdGen := didgen.NewDomainIdGenerator(&models.ZentaoStories{}) cursor, err := db.Cursor( dal.From(&models.ZentaoStories{}), - dal.Where(`_tool_zentao_stories.id = ? and - _tool_zentao_stories.connection_id = ?`, data.Options.StoriesId, data.Options.ConnectionId), + dal.Where(`_tool_zentao_stories.execution_id = ? and + _tool_zentao_stories.connection_id = ?`, data.Options.ExecutionId, data.Options.ConnectionId), ) if err != nil { return err @@ -57,7 +57,9 @@ func ConvertStories(taskCtx core.SubTaskContext) error { RawDataSubTaskArgs: helper.RawDataSubTaskArgs{ Ctx: taskCtx, Params: ZentaoApiParams{ - StoriesId: data.Options.StoriesId, + ProductId: data.Options.ProductId, + ExecutionId: data.Options.ExecutionId, + ProjectId: data.Options.ProjectId, }, Table: RAW_STORIES_TABLE, }, @@ -68,11 +70,11 @@ func ConvertStories(taskCtx core.SubTaskContext) error { DomainEntity: domainlayer.DomainEntity{ Id: boardIdGen.Generate(toolStories.ConnectionId, toolStories.ID), }, - Url: "", - IconURL: "", - IssueKey: "", - Title: toolStories.Title, - Description: toolStories.Spec, + Url: "", + IconURL: "", + IssueKey: "", + Title: toolStories.Title, + //Description: toolStories.Spec, EpicKey: "", Type: toolStories.Type, Status: toolStories.Status, diff --git a/plugins/zentao/tasks/stories_extractor.go b/plugins/zentao/tasks/stories_extractor.go index aaadfb84..a4d37db0 100644 --- a/plugins/zentao/tasks/stories_extractor.go +++ b/plugins/zentao/tasks/stories_extractor.go @@ -40,7 +40,9 @@ func ExtractStories(taskCtx core.SubTaskContext) error { RawDataSubTaskArgs: helper.RawDataSubTaskArgs{ Ctx: taskCtx, Params: ZentaoApiParams{ - StoriesId: data.Options.StoriesId, + ProductId: data.Options.ProductId, + ExecutionId: data.Options.ExecutionId, + ProjectId: data.Options.ProjectId, }, Table: RAW_STORIES_TABLE, }, @@ -51,6 +53,7 @@ func ExtractStories(taskCtx core.SubTaskContext) error { return nil, err } stories.ConnectionId = data.Options.ConnectionId + stories.ExecutionId = data.Options.ExecutionId results := make([]interface{}, 0) results = append(results, stories) return results, nil diff --git a/plugins/zentao/tasks/task_data.go b/plugins/zentao/tasks/task_data.go index ae51908f..c522360e 100644 --- a/plugins/zentao/tasks/task_data.go +++ b/plugins/zentao/tasks/task_data.go @@ -27,7 +27,6 @@ type ZentaoApiParams struct { ProductId uint64 ExecutionId uint64 ProjectId uint64 - StoriesId uint64 } type ZentaoOptions struct { diff --git a/plugins/zentao/zentao.go b/plugins/zentao/zentao.go index 3768b5d9..32845c90 100644 --- a/plugins/zentao/zentao.go +++ b/plugins/zentao/zentao.go @@ -34,7 +34,6 @@ func main() { executionId := cmd.Flags().IntP("executionId", "e", 8, "execution id") productId := cmd.Flags().IntP("productId", "o", 8, "product id") projectId := cmd.Flags().IntP("projectId", "p", 8, "project id") - storiesId := cmd.Flags().IntP("storiesId", "s", 1, "stories id") cmd.Run = func(cmd *cobra.Command, args []string) { runner.DirectRun(cmd, args, PluginEntry, map[string]interface{}{ @@ -42,7 +41,6 @@ func main() { "executionId": *executionId, "productId": *productId, "projectId": *projectId, - "storiesId": *storiesId, }) } runner.RunCmd(cmd)
