dashboards as cfg: expose dashboard service as interface

This commit is contained in:
bergquist
2017-12-01 14:20:52 +01:00
parent 16f072b320
commit f5eac2e91d
3 changed files with 23 additions and 7 deletions

View File

@@ -142,7 +142,7 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
UserId: c.UserId, UserId: c.UserId,
} }
dashboard, err := dashboards.SaveDashboard(dashItem) dashboard, err := dashboards.GetRepository().SaveDashboard(dashItem)
if err == m.ErrDashboardTitleEmpty { if err == m.ErrDashboardTitleEmpty {
return ApiError(400, m.ErrDashboardTitleEmpty.Error(), nil) return ApiError(400, m.ErrDashboardTitleEmpty.Error(), nil)

View File

@@ -1,14 +1,25 @@
package dashboards package dashboards
import ( import (
"time"
"github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/alerting" "github.com/grafana/grafana/pkg/services/alerting"
"time"
) )
type Repository interface { type Repository interface {
SaveDashboard(*SaveDashboardItem) error SaveDashboard(*SaveDashboardItem) (*models.Dashboard, error)
}
var repositoryInstance Repository
func GetRepository() Repository {
return repositoryInstance
}
func SetRepository(rep Repository) {
repositoryInstance = rep
} }
type SaveDashboardItem struct { type SaveDashboardItem struct {
@@ -22,7 +33,9 @@ type SaveDashboardItem struct {
Dashboard *models.Dashboard Dashboard *models.Dashboard
} }
func SaveDashboard(json *SaveDashboardItem) (*models.Dashboard, error) { type dashboardRepository struct{}
func (dr *dashboardRepository) SaveDashboard(json *SaveDashboardItem) (*models.Dashboard, error) {
dashboard := json.Dashboard dashboard := json.Dashboard
if dashboard.Title == "" { if dashboard.Title == "" {

View File

@@ -3,12 +3,13 @@ package dashboards
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/grafana/grafana/pkg/services/dashboards"
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
"time" "time"
"github.com/grafana/grafana/pkg/services/dashboards"
"github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/components/simplejson"
@@ -21,6 +22,7 @@ type fileReader struct {
Path string Path string
log log.Logger log log.Logger
dashboardCache *dashboardCache dashboardCache *dashboardCache
dashboardRepo dashboards.Repository
} }
func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReader, error) { func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReader, error) {
@@ -37,6 +39,7 @@ func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReade
Cfg: cfg, Cfg: cfg,
Path: path, Path: path,
log: log, log: log,
dashboardRepo: dashboards.GetRepository(),
dashboardCache: newDashboardCache(), dashboardCache: newDashboardCache(),
}, nil }, nil
} }
@@ -96,7 +99,7 @@ func (fr *fileReader) walkFolder() error {
if err == models.ErrDashboardNotFound { if err == models.ErrDashboardNotFound {
fr.log.Debug("saving new dashboard", "file", path) fr.log.Debug("saving new dashboard", "file", path)
_, err = dashboards.SaveDashboard(dash) _, err = fr.dashboardRepo.SaveDashboard(dash)
return err return err
} }
@@ -110,7 +113,7 @@ func (fr *fileReader) walkFolder() error {
} }
fr.log.Debug("no dashboard in cache. loading dashboard from disk into database.", "file", path) fr.log.Debug("no dashboard in cache. loading dashboard from disk into database.", "file", path)
_, err = dashboards.SaveDashboard(dash) _, err = fr.dashboardRepo.SaveDashboard(dash)
return err return err
}) })
} }