Browse Source

Merge pull request #4279 from utkarshcmu/ds-api

Implemented GetDataSourceByName API
Carl Bergquist 9 years ago
parent
commit
f824004e4f
2 changed files with 36 additions and 0 deletions
  1. 4 0
      pkg/api/api.go
  2. 32 0
      pkg/api/datasources.go

+ 4 - 0
pkg/api/api.go

@@ -174,6 +174,10 @@ func Register(r *macaron.Macaron) {
 			r.Get("/plugins", GetDataSourcePlugins)
 		}, reqOrgAdmin)
 
+		r.Group("/datasources/name/:name", func() {
+			r.Get("/", wrap(GetDataSourceByName))
+		}, reqOrgAdmin)
+
 		r.Get("/frontend/settings/", GetFrontendSettings)
 		r.Any("/datasources/proxy/:id/*", reqSignedIn, ProxyDataSourceRequest)
 		r.Any("/datasources/proxy/:id", reqSignedIn, ProxyDataSourceRequest)

+ 32 - 0
pkg/api/datasources.go

@@ -132,3 +132,35 @@ func GetDataSourcePlugins(c *middleware.Context) {
 		c.JSON(200, dsList)
 	}
 }
+
+// Get /api/datasources/name/:name
+func GetDataSourceByName(c *middleware.Context) Response {
+	query := m.GetDataSourceByNameQuery{Name: c.Params(":name"), OrgId: c.OrgId}
+
+	if err := bus.Dispatch(&query); err != nil {
+		if err == m.ErrDataSourceNotFound {
+			return ApiError(404, "Data source not found", nil)
+		}
+		return ApiError(500, "Failed to query datasources", err)
+	}
+
+	ds := query.Result
+
+	return Json(200, &dtos.DataSource{
+		Id:                ds.Id,
+		OrgId:             ds.OrgId,
+		Name:              ds.Name,
+		Url:               ds.Url,
+		Type:              ds.Type,
+		Access:            ds.Access,
+		Password:          ds.Password,
+		Database:          ds.Database,
+		User:              ds.User,
+		BasicAuth:         ds.BasicAuth,
+		BasicAuthUser:     ds.BasicAuthUser,
+		BasicAuthPassword: ds.BasicAuthPassword,
+		WithCredentials:   ds.WithCredentials,
+		IsDefault:         ds.IsDefault,
+		JsonData:          ds.JsonData,
+	})
+}