@@ -92,6 +92,11 @@ func AddDataSource(c *middleware.Context, cmd m.AddDataSourceCommand) {
cmd.OrgId = c.OrgId
if err := bus.Dispatch(&cmd); err != nil {
+ if err == m.ErrDataSourceNameExists {
+ c.JsonApiErr(409, err.Error(), err)
+ return
+ }
+
c.JsonApiErr(500, "Failed to add datasource", err)
return
}
@@ -22,7 +22,8 @@ const (
// Typed errors
var (
- ErrDataSourceNotFound = errors.New("Data source not found")
+ ErrDataSourceNotFound = errors.New("Data source not found")
+ ErrDataSourceNameExists = errors.New("Data source with same name already exists")
)
type DsAccess string
@@ -60,6 +60,14 @@ func DeleteDataSource(cmd *m.DeleteDataSourceCommand) error {
func AddDataSource(cmd *m.AddDataSourceCommand) error {
return inTransaction(func(sess *xorm.Session) error {
+ existing := m.DataSource{OrgId: cmd.OrgId, Name: cmd.Name}
+ has, _ := x.Get(&existing)
+ if has {
+ return m.ErrDataSourceNameExists
ds := &m.DataSource{
OrgId: cmd.OrgId,
Name: cmd.Name,