pull/1022/head
Jade McGough 2017-03-22 22:21:25 -07:00
parent 15b2744a5c
commit 523a0788f7
4 changed files with 50 additions and 1 deletions

View File

@ -305,6 +305,7 @@ type Databases interface {
// All lists all databases
AllDB(context.Context) ([]Database, error)
Connect(context.Context, *Source) error
CreateDB(context.Context, db *chronograf.Database) (*chronograf.Database, error)
}
// DashboardID is the dashboard ID

View File

@ -3,6 +3,7 @@ package influx
import (
"encoding/json"
"context"
"fmt"
"github.com/influxdata/chronograf"
)
@ -16,6 +17,19 @@ func (c *Client) AllDB(ctx context.Context) ([]chronograf.Database, error) {
return databases, nil
}
func (c *Client) CreateDB(ctx context.Context, db *chronograf.Database) (*chronograf.Database, error) {
_, err := c.Query(ctx, chronograf.Query{
Command: fmt.Sprintf(`CREATE DATABASE "%s"`, db.Name),
})
if err != nil {
return nil, err
}
res := &chronograf.Database{Name: db.Name}
return res, nil
}
func (c *Client) showDatabases(ctx context.Context) ([]chronograf.Database, error) {
res, err := c.Query(ctx, chronograf.Query{
Command: `SHOW DATABASES`,

View File

@ -65,3 +65,37 @@ func (h *Service) GetDatabases(w http.ResponseWriter, r *http.Request) {
encodeJSON(w, http.StatusOK, res, h.Logger)
}
func (h *Service) NewDatabase(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
srcID, err := paramID("id", r)
if err != nil {
Error(w, http.StatusUnprocessableEntity, err.Error(), h.Logger)
return
}
src, err := h.SourcesStore.Get(ctx, srcID)
if err != nil {
notFound(w, srcID, h.Logger)
return
}
db := h.Databases
if err = db.Connect(ctx, &src); err != nil {
msg := fmt.Sprintf("Unable to connect to source %d: %v", srcID, err)
Error(w, http.StatusBadRequest, msg, h.Logger)
return
}
// need to pass database object from POST
database, err := db.CreateDB(ctx, )
if err != nil {
Error(w, http.StatusBadRequest, err.Error(), h.Logger)
return
}
res := dbResponse{Name: database.Name}
encodeJSON(w, http.StatusOK, res, h.Logger)
}

View File

@ -133,7 +133,7 @@ func NewMux(opts MuxOpts, service Service) http.Handler {
// Databases
router.GET("/chronograf/v1/sources/:id/dbs", service.GetDatabases)
// router.POST("/chronograf/v1/sources/:id/dbs", service.NewDatabase)
router.POST("/chronograf/v1/sources/:id/dbs", service.NewDatabase)
//
// router.DELETE("/chronograf/v1/sources/:id/dbs/:did", service.DropDatabase)
//