diff --git a/engine/api/auth_local.go b/engine/api/auth_local.go index df4f13c533..e8bda21c70 100644 --- a/engine/api/auth_local.go +++ b/engine/api/auth_local.go @@ -148,8 +148,6 @@ func initBuiltinConsumersFromStartupConfig(ctx context.Context, tx gorpmapper.Sq scopes = sdk.NewAuthConsumerScopeDetails(sdk.AuthConsumerScopeService, sdk.AuthConsumerScopeRunExecution) case StartupConfigConsumerTypeCDNStorageCDS: scopes = sdk.NewAuthConsumerScopeDetails(sdk.AuthConsumerScopeProject, sdk.AuthConsumerScopeRun) - case StartupConfigConsumerTypeVCS: - scopes = sdk.NewAuthConsumerScopeDetails(sdk.AuthConsumerScopeService, sdk.AuthConsumerScopeProject, sdk.AuthConsumerScopeRun) case StartupConfigConsumerTypeRepositories: scopes = sdk.NewAuthConsumerScopeDetails(sdk.AuthConsumerScopeService, sdk.AuthConsumerScopeProject, sdk.AuthConsumerScopeRun) default: diff --git a/engine/api/workflow.go b/engine/api/workflow.go index 066678feac..65fa89098f 100644 --- a/engine/api/workflow.go +++ b/engine/api/workflow.go @@ -920,6 +920,7 @@ func (api *API) getSearchWorkflowHandler() service.Handler { dao.Filters.WorkflowName = FormString(r, "name") dao.Filters.VCSServer = FormString(r, "vcs") dao.Filters.ApplicationRepository = FormString(r, "repository") + dao.Filters.AsCode = service.FormBool(r, "ascode") dao.Loaders.WithRuns = service.FormInt(r, "runs") dao.Loaders.WithFavoritesForUserID = getAPIConsumer(ctx).AuthentifiedUserID diff --git a/engine/api/workflow/factory_dao.go b/engine/api/workflow/factory_dao.go index 5079b176c6..72e32bb9b0 100644 --- a/engine/api/workflow/factory_dao.go +++ b/engine/api/workflow/factory_dao.go @@ -3,6 +3,7 @@ package workflow import ( "context" "fmt" + "strings" "time" "github.com/go-gorp/gorp" @@ -72,6 +73,7 @@ type LoadAllWorkflowsOptionsFilters struct { GroupIDs []int64 WorkflowIDs []int64 DisableFilterDeletedWorkflow bool + AsCode bool } type LoadAllWorkflowsOptionsLoaders struct { @@ -169,17 +171,21 @@ func (dao WorkflowDAO) Query() gorpmapping.Query { args = append(args, pq.Int64Array(dao.Filters.WorkflowIDs)) } + queryFilters := make([]string, 0, len(filters)) for i, f := range filters { - if i == 0 { - queryString += " WHERE " - } else { - queryString += " AND " - } - queryString += fmt.Sprintf(f, i+1) + queryFilters = append(queryFilters, fmt.Sprintf(f, i+1)) } if !dao.Filters.DisableFilterDeletedWorkflow { - queryString += " AND workflow.to_delete = false" + queryFilters = append(queryFilters, "workflow.to_delete = false") + } + + if dao.Filters.AsCode { + queryFilters = append(queryFilters, "workflow.from_repository <> ''") + } + + if len(queryFilters) > 0 { + queryString += "WHERE " + strings.Join(queryFilters, " AND ") } var order = " ORDER BY selected_workflow.projectkey, selected_workflow.workflow_name "