mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
(feat) support datasource delete by name api
This commit is contained in:
parent
bccb650010
commit
143cbe921f
@ -198,7 +198,8 @@ func (hs *HttpServer) registerRoutes() {
|
|||||||
r.Get("/", GetDataSources)
|
r.Get("/", GetDataSources)
|
||||||
r.Post("/", quota("data_source"), bind(m.AddDataSourceCommand{}), AddDataSource)
|
r.Post("/", quota("data_source"), bind(m.AddDataSourceCommand{}), AddDataSource)
|
||||||
r.Put("/:id", bind(m.UpdateDataSourceCommand{}), wrap(UpdateDataSource))
|
r.Put("/:id", bind(m.UpdateDataSourceCommand{}), wrap(UpdateDataSource))
|
||||||
r.Delete("/:id", DeleteDataSource)
|
r.Delete("/:id", DeleteDataSourceById)
|
||||||
|
r.Delete("/name/:name", DeleteDataSourceByName)
|
||||||
r.Get("/:id", wrap(GetDataSourceById))
|
r.Get("/:id", wrap(GetDataSourceById))
|
||||||
r.Get("/name/:name", wrap(GetDataSourceByName))
|
r.Get("/name/:name", wrap(GetDataSourceByName))
|
||||||
}, reqOrgAdmin)
|
}, reqOrgAdmin)
|
||||||
|
@ -68,7 +68,7 @@ func GetDataSourceById(c *middleware.Context) Response {
|
|||||||
return Json(200, &dtos)
|
return Json(200, &dtos)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteDataSource(c *middleware.Context) {
|
func DeleteDataSourceById(c *middleware.Context) {
|
||||||
id := c.ParamsInt64(":id")
|
id := c.ParamsInt64(":id")
|
||||||
|
|
||||||
if id <= 0 {
|
if id <= 0 {
|
||||||
@ -76,7 +76,26 @@ func DeleteDataSource(c *middleware.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &m.DeleteDataSourceCommand{Id: id, OrgId: c.OrgId}
|
cmd := &m.DeleteDataSourceByIdCommand{Id: id, OrgId: c.OrgId}
|
||||||
|
|
||||||
|
err := bus.Dispatch(cmd)
|
||||||
|
if err != nil {
|
||||||
|
c.JsonApiErr(500, "Failed to delete datasource", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JsonOK("Data source deleted")
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteDataSourceByName(c *middleware.Context) {
|
||||||
|
name := c.Params(":name")
|
||||||
|
|
||||||
|
if name == "" {
|
||||||
|
c.JsonApiErr(400, "Missing valid datasource name", nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd := &m.DeleteDataSourceByNameCommand{Name: name, OrgId: c.OrgId}
|
||||||
|
|
||||||
err := bus.Dispatch(cmd)
|
err := bus.Dispatch(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -120,11 +120,16 @@ type UpdateDataSourceCommand struct {
|
|||||||
Id int64 `json:"-"`
|
Id int64 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeleteDataSourceCommand struct {
|
type DeleteDataSourceByIdCommand struct {
|
||||||
Id int64
|
Id int64
|
||||||
OrgId int64
|
OrgId int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DeleteDataSourceByNameCommand struct {
|
||||||
|
Name string
|
||||||
|
OrgId int64
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------
|
// ---------------------
|
||||||
// QUERIES
|
// QUERIES
|
||||||
|
|
||||||
|
@ -13,7 +13,8 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
bus.AddHandler("sql", GetDataSources)
|
bus.AddHandler("sql", GetDataSources)
|
||||||
bus.AddHandler("sql", AddDataSource)
|
bus.AddHandler("sql", AddDataSource)
|
||||||
bus.AddHandler("sql", DeleteDataSource)
|
bus.AddHandler("sql", DeleteDataSourceById)
|
||||||
|
bus.AddHandler("sql", DeleteDataSourceByName)
|
||||||
bus.AddHandler("sql", UpdateDataSource)
|
bus.AddHandler("sql", UpdateDataSource)
|
||||||
bus.AddHandler("sql", GetDataSourceById)
|
bus.AddHandler("sql", GetDataSourceById)
|
||||||
bus.AddHandler("sql", GetDataSourceByName)
|
bus.AddHandler("sql", GetDataSourceByName)
|
||||||
@ -50,7 +51,7 @@ func GetDataSources(query *m.GetDataSourcesQuery) error {
|
|||||||
return sess.Find(&query.Result)
|
return sess.Find(&query.Result)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteDataSource(cmd *m.DeleteDataSourceCommand) error {
|
func DeleteDataSourceById(cmd *m.DeleteDataSourceByIdCommand) error {
|
||||||
return inTransaction(func(sess *xorm.Session) error {
|
return inTransaction(func(sess *xorm.Session) error {
|
||||||
var rawSql = "DELETE FROM data_source WHERE id=? and org_id=?"
|
var rawSql = "DELETE FROM data_source WHERE id=? and org_id=?"
|
||||||
_, err := sess.Exec(rawSql, cmd.Id, cmd.OrgId)
|
_, err := sess.Exec(rawSql, cmd.Id, cmd.OrgId)
|
||||||
@ -58,6 +59,14 @@ func DeleteDataSource(cmd *m.DeleteDataSourceCommand) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteDataSourceByName(cmd *m.DeleteDataSourceByNameCommand) error {
|
||||||
|
return inTransaction(func(sess *xorm.Session) error {
|
||||||
|
var rawSql = "DELETE FROM data_source WHERE name=? and org_id=?"
|
||||||
|
_, err := sess.Exec(rawSql, cmd.Name, cmd.OrgId)
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func AddDataSource(cmd *m.AddDataSourceCommand) error {
|
func AddDataSource(cmd *m.AddDataSourceCommand) error {
|
||||||
|
|
||||||
return inTransaction(func(sess *xorm.Session) error {
|
return inTransaction(func(sess *xorm.Session) error {
|
||||||
|
@ -79,8 +79,16 @@ func TestDataAccess(t *testing.T) {
|
|||||||
|
|
||||||
ds := query.Result[0]
|
ds := query.Result[0]
|
||||||
|
|
||||||
Convey("Can delete datasource", func() {
|
Convey("Can delete datasource by id", func() {
|
||||||
err := DeleteDataSource(&m.DeleteDataSourceCommand{Id: ds.Id, OrgId: ds.OrgId})
|
err := DeleteDataSourceById(&m.DeleteDataSourceByIdCommand{Id: ds.Id, OrgId: ds.OrgId})
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
GetDataSources(&query)
|
||||||
|
So(len(query.Result), ShouldEqual, 0)
|
||||||
|
})
|
||||||
|
|
||||||
|
Convey("Can delete datasource by name", func() {
|
||||||
|
err := DeleteDataSourceByName(&m.DeleteDataSourceByNameCommand{Name: ds.Name, OrgId: ds.OrgId})
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
GetDataSources(&query)
|
GetDataSources(&query)
|
||||||
@ -88,7 +96,7 @@ func TestDataAccess(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Convey("Can not delete datasource with wrong orgId", func() {
|
Convey("Can not delete datasource with wrong orgId", func() {
|
||||||
err := DeleteDataSource(&m.DeleteDataSourceCommand{Id: ds.Id, OrgId: 123123})
|
err := DeleteDataSourceById(&m.DeleteDataSourceByIdCommand{Id: ds.Id, OrgId: 123123})
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
GetDataSources(&query)
|
GetDataSources(&query)
|
||||||
|
Loading…
Reference in New Issue
Block a user