Просмотр исходного кода

Merge pull request #7519 from huydx/master

(feat) support datasource delete by name api
Carl Bergquist 8 лет назад
Родитель
Сommit
7f4f38e773

+ 2 - 1
pkg/api/api.go

@@ -198,7 +198,8 @@ func (hs *HttpServer) registerRoutes() {
 			r.Get("/", GetDataSources)
 			r.Post("/", quota("data_source"), bind(m.AddDataSourceCommand{}), AddDataSource)
 			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("/name/:name", wrap(GetDataSourceByName))
 		}, reqOrgAdmin)

+ 21 - 2
pkg/api/datasources.go

@@ -68,7 +68,7 @@ func GetDataSourceById(c *middleware.Context) Response {
 	return Json(200, &dtos)
 }
 
-func DeleteDataSource(c *middleware.Context) {
+func DeleteDataSourceById(c *middleware.Context) {
 	id := c.ParamsInt64(":id")
 
 	if id <= 0 {
@@ -76,7 +76,26 @@ func DeleteDataSource(c *middleware.Context) {
 		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)
 	if err != nil {

+ 6 - 1
pkg/models/datasource.go

@@ -120,11 +120,16 @@ type UpdateDataSourceCommand struct {
 	Id    int64 `json:"-"`
 }
 
-type DeleteDataSourceCommand struct {
+type DeleteDataSourceByIdCommand struct {
 	Id    int64
 	OrgId int64
 }
 
+type DeleteDataSourceByNameCommand struct {
+	Name  string
+	OrgId int64
+}
+
 // ---------------------
 // QUERIES
 

+ 11 - 2
pkg/services/sqlstore/datasource.go

@@ -13,7 +13,8 @@ import (
 func init() {
 	bus.AddHandler("sql", GetDataSources)
 	bus.AddHandler("sql", AddDataSource)
-	bus.AddHandler("sql", DeleteDataSource)
+	bus.AddHandler("sql", DeleteDataSourceById)
+	bus.AddHandler("sql", DeleteDataSourceByName)
 	bus.AddHandler("sql", UpdateDataSource)
 	bus.AddHandler("sql", GetDataSourceById)
 	bus.AddHandler("sql", GetDataSourceByName)
@@ -50,7 +51,7 @@ func GetDataSources(query *m.GetDataSourcesQuery) error {
 	return sess.Find(&query.Result)
 }
 
-func DeleteDataSource(cmd *m.DeleteDataSourceCommand) error {
+func DeleteDataSourceById(cmd *m.DeleteDataSourceByIdCommand) error {
 	return inTransaction(func(sess *xorm.Session) error {
 		var rawSql = "DELETE FROM data_source WHERE id=? and org_id=?"
 		_, 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 {
 
 	return inTransaction(func(sess *xorm.Session) error {

+ 11 - 3
pkg/services/sqlstore/datasource_test.go

@@ -79,8 +79,16 @@ func TestDataAccess(t *testing.T) {
 
 			ds := query.Result[0]
 
-			Convey("Can delete datasource", func() {
-				err := DeleteDataSource(&m.DeleteDataSourceCommand{Id: ds.Id, OrgId: ds.OrgId})
+			Convey("Can delete datasource by id", func() {
+				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)
 
 				GetDataSources(&query)
@@ -88,7 +96,7 @@ func TestDataAccess(t *testing.T) {
 			})
 
 			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)
 
 				GetDataSources(&query)