MCPcopy
hub / github.com/apache/devlake / DbtConverter

Function DbtConverter

backend/plugins/dbt/tasks/convertor.go:36–230  ·  view source on GitHub ↗
(taskCtx plugin.SubTaskContext)

Source from the content-addressed store, hash-verified

34)
35
36func DbtConverter(taskCtx plugin.SubTaskContext) (err errors.Error) {
37 logger := taskCtx.GetLogger()
38 taskCtx.SetProgress(0, -1)
39 data := taskCtx.GetData().(*DbtTaskData)
40 models := data.Options.SelectedModels
41 projectPath := data.Options.ProjectPath
42 projectName := data.Options.ProjectName
43 projectTarget := data.Options.ProjectTarget
44 projectVars := data.Options.ProjectVars
45 args := data.Options.Args
46 failFast := data.Options.FailFast
47 threads := data.Options.Threads
48 noVersionCheck := data.Options.NoVersionCheck
49 excludeModels := data.Options.ExcludeModels
50 selector := data.Options.Selector
51 state := data.Options.State
52 deferFlag := data.Options.Defer
53 noDefer := data.Options.NoDefer
54 fullRefresh := data.Options.FullRefresh
55 profilesPath := data.Options.ProfilesPath
56 profile := data.Options.Profile
57
58 defaultProfilesPath := filepath.Join(projectPath, "profiles.yml")
59 _, err = errors.Convert01(os.Stat(defaultProfilesPath))
60 // if profiles.yml not exist, create it manually
61 if err != nil {
62 dbUrl := taskCtx.GetConfig("DB_URL")
63 u, err := errors.Convert01(url.Parse(dbUrl))
64 if err != nil {
65 return err
66 }
67 dbType := u.Scheme
68 dbUsername := u.User.Username()
69 dbPassword, _ := u.User.Password()
70 dbServer, dbPort, _ := net.SplitHostPort(u.Host)
71 dbDataBase := u.Path[1:]
72 var dbSchema string
73 flag := strings.Compare(dbType, "mysql")
74 if flag == 0 {
75 // mysql database
76 dbSchema = dbDataBase
77 } else {
78 // other database
79 mapQuery, err := errors.Convert01(url.ParseQuery(u.RawQuery))
80 if err != nil {
81 return err
82 }
83 if value, ok := mapQuery["search_path"]; ok {
84 if len(value) < 1 {
85 return errors.Default.New("DB_URL search_path parses error")
86 }
87 dbSchema = value[0]
88 } else {
89 dbSchema = "public"
90 }
91 }
92 config := viper.New()
93 config.Set(projectName+".target", projectTarget)

Callers

nothing calls this directly

Calls 13

WaitMethod · 0.80
ErrMethod · 0.80
GetLoggerMethod · 0.65
SetProgressMethod · 0.65
GetDataMethod · 0.65
GetConfigMethod · 0.65
NewMethod · 0.65
InfoMethod · 0.65
ErrorMethod · 0.65
ScanMethod · 0.65
IncProgressMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected