diff --git a/internal/repository/init.go b/internal/repository/init.go index 1281c43..159dd16 100644 --- a/internal/repository/init.go +++ b/internal/repository/init.go @@ -75,6 +75,7 @@ const JobsDBSchema string = ` // Indexes are created after the job-archive is traversed for faster inserts. const JobsDbIndexes string = ` + CREATE INDEX job_stats ON job (cluster,subcluster,user); CREATE INDEX job_by_user ON job (user); CREATE INDEX job_by_starttime ON job (start_time); CREATE INDEX job_by_job_id ON job (job_id); diff --git a/internal/repository/job.go b/internal/repository/job.go index 31a2105..ac17b44 100644 --- a/internal/repository/job.go +++ b/internal/repository/job.go @@ -649,7 +649,10 @@ var groupBy2column = map[model.Aggregate]string{ } // Helper function for the jobsStatistics GraphQL query placed here so that schema.resolvers.go is not too full. -func (r *JobRepository) JobsStatistics(ctx context.Context, filter []*model.JobFilter, groupBy *model.Aggregate) ([]*model.JobsStatistics, error) { +func (r *JobRepository) JobsStatistics(ctx context.Context, + filter []*model.JobFilter, + groupBy *model.Aggregate) ([]*model.JobsStatistics, error) { + // In case `groupBy` is nil (not used), the model.JobsStatistics used is at the key '' (empty string) stats := map[string]*model.JobsStatistics{} diff --git a/internal/routerConfig/routes.go b/internal/routerConfig/routes.go index 9663874..417ced3 100644 --- a/internal/routerConfig/routes.go +++ b/internal/routerConfig/routes.go @@ -12,9 +12,8 @@ import ( "strings" "time" - "github.com/ClusterCockpit/cc-backend/internal/auth" "github.com/ClusterCockpit/cc-backend/internal/api" - "github.com/ClusterCockpit/cc-backend/internal/graph" + "github.com/ClusterCockpit/cc-backend/internal/auth" "github.com/ClusterCockpit/cc-backend/internal/graph/model" "github.com/ClusterCockpit/cc-backend/internal/repository" "github.com/ClusterCockpit/cc-backend/pkg/archive" @@ -73,7 +72,7 @@ func setupHomeRoute(i InfoType, r *http.Request) InfoType { from := time.Now().Add(-24 * time.Hour) recentShortJobs, err := jobRepo.CountGroupedJobs(r.Context(), model.AggregateCluster, []*model.JobFilter{{ StartTime: &schema.TimeRange{From: &from, To: nil}, - Duration: &schema.IntRange{From: 0, To: graph.ShortJobDuration}, + Duration: &schema.IntRange{From: 0, To: repository.ShortJobDuration}, }}, nil, nil) if err != nil { log.Warnf("failed to count jobs: %s", err.Error()) @@ -303,7 +302,7 @@ func HandleSearchBar(rw http.ResponseWriter, r *http.Request, api *api.RestApi) if search := r.URL.Query().Get("searchId"); search != "" { splitSearch := strings.Split(search, ":") - if (len(splitSearch) == 2) { + if len(splitSearch) == 2 { switch strings.Trim(splitSearch[0], " ") { case "jobId": http.Redirect(rw, r, "/monitoring/jobs/?jobId="+url.QueryEscape(strings.Trim(splitSearch[1], " ")), http.StatusTemporaryRedirect) // All Users: Redirect to Tablequery @@ -331,7 +330,7 @@ func HandleSearchBar(rw http.ResponseWriter, r *http.Request, api *api.RestApi) http.Error(rw, "'searchId' type parameter unknown", http.StatusBadRequest) } - } else if (len(splitSearch) == 1) { + } else if len(splitSearch) == 1 { jobname, username, project, err := api.JobRepository.FindJobnameOrUserOrProject(r.Context(), strings.Trim(search, " ")) // Determine Access within if err != nil { @@ -342,10 +341,10 @@ func HandleSearchBar(rw http.ResponseWriter, r *http.Request, api *api.RestApi) if username != "" { http.Redirect(rw, r, "/monitoring/user/"+username, http.StatusTemporaryRedirect) // User: Redirect to user page return - } else if (project != "") { + } else if project != "" { http.Redirect(rw, r, "/monitoring/jobs/?projectMatch=eq&project="+url.QueryEscape(strings.Trim(search, " ")), http.StatusTemporaryRedirect) // projectId (equal) return - } else if (jobname != "") { + } else if jobname != "" { http.Redirect(rw, r, "/monitoring/jobs/?jobName="+url.QueryEscape(strings.Trim(search, " ")), http.StatusTemporaryRedirect) // JobName (contains) return } else {