(feat) support datasource delete by name api

This commit is contained in:
huydx 2017-02-10 11:11:36 +09:00 committed by huydx
parent bccb650010
commit 143cbe921f
5 changed files with 51 additions and 9 deletions

View File

@ -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)

View File

@ -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 {

View File

@ -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

View File

@ -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 {

View File

@ -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)