This is an automated email from the ASF dual-hosted git repository.

warren pushed a commit to branch feat-plugin-coding
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/feat-plugin-coding by this 
push:
     new 6f8b44c2 feat(coding): add depot extractor
6f8b44c2 is described below

commit 6f8b44c29cf577fc33e5be6905406bd415f36e7b
Author: Yingchu Chen <[email protected]>
AuthorDate: Wed Oct 12 14:31:36 2022 +0800

    feat(coding): add depot extractor
---
 plugins/coding/coding.go                           |  8 ++--
 plugins/coding/impl/impl.go                        |  1 +
 .../20220928_add_init_tables.go => depot.go}       | 32 ++++++-------
 .../migrationscripts/20220928_add_init_tables.go   |  5 ++-
 .../depot.go}                                      | 32 ++++++-------
 plugins/coding/tasks/depot_collector.go            |  4 +-
 .../{depot_collector.go => depot_extractor.go}     | 52 ++++++++--------------
 plugins/coding/tasks/task_data.go                  |  4 +-
 8 files changed, 58 insertions(+), 80 deletions(-)

diff --git a/plugins/coding/coding.go b/plugins/coding/coding.go
index 6f79dec7..f1da5238 100644
--- a/plugins/coding/coding.go
+++ b/plugins/coding/coding.go
@@ -31,13 +31,13 @@ func main() {
        cmd := &cobra.Command{Use: "coding"}
 
        // TODO add your cmd flag if necessary
-       depotId := cmd.Flags().IntP("depotId", "d", 1, "depotId")
-       connectionId := cmd.Flags().Uint64P("connectionId", "c", 0, "coding 
connection id")
+       //depotId := cmd.Flags().Int64P("depotId", "d", 9748559, "depotId")
+       //connectionId := cmd.Flags().Int64P("connectionId", "c", 1, "coding 
connection id")
 
        cmd.Run = func(cmd *cobra.Command, args []string) {
                runner.DirectRun(cmd, args, PluginEntry, map[string]interface{}{
-                       "connectionId": *connectionId,
-                       "depotId":      *depotId,
+                       "connectionId": 1,
+                       "depotId":      9748559,
                })
        }
        runner.RunCmd(cmd)
diff --git a/plugins/coding/impl/impl.go b/plugins/coding/impl/impl.go
index e7947574..f398ea38 100644
--- a/plugins/coding/impl/impl.go
+++ b/plugins/coding/impl/impl.go
@@ -54,6 +54,7 @@ func (plugin Coding) SubTaskMetas() []core.SubTaskMeta {
        // TODO add your sub task here
        return []core.SubTaskMeta{
                tasks.CollectDepotMeta,
+               tasks.ExtractDepotMeta,
        }
 }
 
diff --git a/plugins/coding/models/migrationscripts/20220928_add_init_tables.go 
b/plugins/coding/models/depot.go
similarity index 58%
copy from plugins/coding/models/migrationscripts/20220928_add_init_tables.go
copy to plugins/coding/models/depot.go
index 6d365b08..5a56b5b9 100644
--- a/plugins/coding/models/migrationscripts/20220928_add_init_tables.go
+++ b/plugins/coding/models/depot.go
@@ -15,28 +15,24 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 */
 
-package migrationscripts
+package models
 
 import (
-       "context"
-       "github.com/apache/incubator-devlake/errors"
-       
"github.com/apache/incubator-devlake/plugins/coding/models/migrationscripts/archived"
-       "gorm.io/gorm"
+       "github.com/apache/incubator-devlake/models/common"
 )
 
-type addInitTables struct{}
-
-func (u *addInitTables) Up(ctx context.Context, db *gorm.DB) errors.Error {
-       err := db.Migrator().AutoMigrate(
-               archived.CodingConnection{},
-       )
-       return errors.Convert(err)
-}
-
-func (*addInitTables) Version() uint64 {
-       return 20220928000001
+type CodingDepot struct {
+       common.NoPKModel
+       ConnectionId uint64 `gorm:"primaryKey" json:"connectionId"`
+       ID           int64  `gorm:"primaryKey;type:BIGINT" json:"Id"`
+       Name         string `gorm:"type:varchar(255)" json:"Name"`
+       HTTPSURL     string `json:"HttpsUrl"`
+       ProjectID    int64  `json:"ProjectId"`
+       SSHURL       string `json:"SshUrl"`
+       WebURL       string `json:"WebUrl"`
+       VcsType      string `json:"VcsType"`
 }
 
-func (*addInitTables) Name() string {
-       return "coding init schemas"
+func (CodingDepot) TableName() string {
+       return "_tool_coding_depots"
 }
diff --git a/plugins/coding/models/migrationscripts/20220928_add_init_tables.go 
b/plugins/coding/models/migrationscripts/20220928_add_init_tables.go
index 6d365b08..b38b3249 100644
--- a/plugins/coding/models/migrationscripts/20220928_add_init_tables.go
+++ b/plugins/coding/models/migrationscripts/20220928_add_init_tables.go
@@ -28,13 +28,14 @@ type addInitTables struct{}
 
 func (u *addInitTables) Up(ctx context.Context, db *gorm.DB) errors.Error {
        err := db.Migrator().AutoMigrate(
-               archived.CodingConnection{},
+               //archived.CodingConnection{},
+               archived.CodingDepot{},
        )
        return errors.Convert(err)
 }
 
 func (*addInitTables) Version() uint64 {
-       return 20220928000001
+       return 20221012000001
 }
 
 func (*addInitTables) Name() string {
diff --git a/plugins/coding/models/migrationscripts/20220928_add_init_tables.go 
b/plugins/coding/models/migrationscripts/archived/depot.go
similarity index 57%
copy from plugins/coding/models/migrationscripts/20220928_add_init_tables.go
copy to plugins/coding/models/migrationscripts/archived/depot.go
index 6d365b08..80777b27 100644
--- a/plugins/coding/models/migrationscripts/20220928_add_init_tables.go
+++ b/plugins/coding/models/migrationscripts/archived/depot.go
@@ -15,28 +15,24 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 */
 
-package migrationscripts
+package archived
 
 import (
-       "context"
-       "github.com/apache/incubator-devlake/errors"
-       
"github.com/apache/incubator-devlake/plugins/coding/models/migrationscripts/archived"
-       "gorm.io/gorm"
+       "github.com/apache/incubator-devlake/models/migrationscripts/archived"
 )
 
-type addInitTables struct{}
-
-func (u *addInitTables) Up(ctx context.Context, db *gorm.DB) errors.Error {
-       err := db.Migrator().AutoMigrate(
-               archived.CodingConnection{},
-       )
-       return errors.Convert(err)
-}
-
-func (*addInitTables) Version() uint64 {
-       return 20220928000001
+type CodingDepot struct {
+       archived.NoPKModel
+       ConnectionId uint64 `gorm:"primaryKey" json:"connectionId"`
+       ID           int64  `gorm:"primaryKey;type:BIGINT" json:"Id"`
+       Name         string `gorm:"type:varchar(255)" json:"Name"`
+       HTTPSURL     string `json:"HttpsUrl"`
+       ProjectID    int64  `json:"ProjectId"`
+       SSHURL       string `json:"SshUrl"`
+       WebURL       string `json:"WebUrl"`
+       VcsType      string `json:"VcsType"`
 }
 
-func (*addInitTables) Name() string {
-       return "coding init schemas"
+func (CodingDepot) TableName() string {
+       return "_tool_coding_depots"
 }
diff --git a/plugins/coding/tasks/depot_collector.go 
b/plugins/coding/tasks/depot_collector.go
index 9ad3aa73..defe9ca9 100644
--- a/plugins/coding/tasks/depot_collector.go
+++ b/plugins/coding/tasks/depot_collector.go
@@ -45,14 +45,14 @@ func CollectDepot(taskCtx core.SubTaskContext) errors.Error 
{
                Incremental: false,
                //PageSize: 100,
                // TODO write which api would you want request
-               UrlTemplate: "open-api",
+               UrlTemplate: "",
                ResponseParser: func(res *http.Response) ([]json.RawMessage, 
errors.Error) {
                        var resData struct {
                                Response struct {
                                        Depot json.RawMessage `json:"Depot"`
                                } `json:"Response"`
                        }
-                       err := helper.UnmarshalResponse(res, 
&resData.Response.Depot)
+                       err := helper.UnmarshalResponse(res, &resData)
 
                        return []json.RawMessage{resData.Response.Depot}, err
                },
diff --git a/plugins/coding/tasks/depot_collector.go 
b/plugins/coding/tasks/depot_extractor.go
similarity index 51%
copy from plugins/coding/tasks/depot_collector.go
copy to plugins/coding/tasks/depot_extractor.go
index 9ad3aa73..eaa52661 100644
--- a/plugins/coding/tasks/depot_collector.go
+++ b/plugins/coding/tasks/depot_extractor.go
@@ -20,19 +20,16 @@ package tasks
 import (
        "encoding/json"
        "github.com/apache/incubator-devlake/errors"
+       "github.com/apache/incubator-devlake/plugins/coding/models"
        "github.com/apache/incubator-devlake/plugins/core"
        "github.com/apache/incubator-devlake/plugins/helper"
-       "net/http"
 )
 
-const RAW_DEPOT_TABLE = "coding_depot"
+var _ core.SubTaskEntryPoint = ExtractDepot
 
-var _ core.SubTaskEntryPoint = CollectDepot
-
-func CollectDepot(taskCtx core.SubTaskContext) errors.Error {
+func ExtractDepot(taskCtx core.SubTaskContext) errors.Error {
        data := taskCtx.GetData().(*CodingTaskData)
-
-       collector, err := helper.NewApiCollector(helper.ApiCollectorArgs{
+       extractor, err := helper.NewApiExtractor(helper.ApiExtractorArgs{
                RawDataSubTaskArgs: helper.RawDataSubTaskArgs{
                        Ctx: taskCtx,
                        Params: CodingApiParams{
@@ -41,41 +38,28 @@ func CollectDepot(taskCtx core.SubTaskContext) errors.Error 
{
                        },
                        Table: RAW_DEPOT_TABLE,
                },
-               ApiClient:   data.ApiClient,
-               Incremental: false,
-               //PageSize: 100,
-               // TODO write which api would you want request
-               UrlTemplate: "open-api",
-               ResponseParser: func(res *http.Response) ([]json.RawMessage, 
errors.Error) {
-                       var resData struct {
-                               Response struct {
-                                       Depot json.RawMessage `json:"Depot"`
-                               } `json:"Response"`
+               Extract: func(resData *helper.RawData) ([]interface{}, 
errors.Error) {
+                       extractedModels := make([]interface{}, 0)
+                       toolL := &models.CodingDepot{}
+                       err := errors.Convert(json.Unmarshal(resData.Data, 
&toolL))
+                       if err != nil {
+                               return nil, err
                        }
-                       err := helper.UnmarshalResponse(res, 
&resData.Response.Depot)
-
-                       return []json.RawMessage{resData.Response.Depot}, err
-               },
-               RequestBody: func(reqData *helper.RequestData) 
map[string]interface{} {
-                       body := make(map[string]interface{})
-                       body["Action"] = "DescribeGitDepot"
-                       body["DepotId"] = data.Options.DepotId
-                       //body["PageNumber"] = reqData.Pager.Page
-                       //body["PageSize"] = reqData.Pager.Size
-                       return body
+                       toolL.ConnectionId = data.Options.ConnectionId
+                       extractedModels = append(extractedModels, toolL)
+                       return extractedModels, nil
                },
-               Method: http.MethodPost,
        })
        if err != nil {
                return err
        }
 
-       return collector.Execute()
+       return extractor.Execute()
 }
 
-var CollectDepotMeta = core.SubTaskMeta{
-       Name:             "CollectDepot",
-       EntryPoint:       CollectDepot,
+var ExtractDepotMeta = core.SubTaskMeta{
+       Name:             "ExtractDepot",
+       EntryPoint:       ExtractDepot,
        EnabledByDefault: true,
-       Description:      "Collect Depot data from Coding api",
+       Description:      "Extract raw data into tool layer table coding_depot",
 }
diff --git a/plugins/coding/tasks/task_data.go 
b/plugins/coding/tasks/task_data.go
index bada0113..377334aa 100644
--- a/plugins/coding/tasks/task_data.go
+++ b/plugins/coding/tasks/task_data.go
@@ -24,7 +24,7 @@ import (
 
 type CodingApiParams struct {
        ConnectionId uint64
-       DepotId      uint64
+       DepotId      int64
 }
 
 type CodingOptions struct {
@@ -34,7 +34,7 @@ type CodingOptions struct {
        // You can use it in sub tasks and you need pass it in main.go and 
pipelines.
        ConnectionId uint64   `json:"connectionId"`
        Tasks        []string `json:"tasks,omitempty"`
-       DepotId      uint64
+       DepotId      int64
        Since        string
 }
 

Reply via email to