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)

Reply via email to