Library Panels: Add name endpoint & unique name validation to AddLibraryPanelModal (#33987)

This commit is contained in:
kay delaney
2021-05-14 15:03:37 +01:00
committed by GitHub
parent d49deebefe
commit c778d6a4a2
8 changed files with 269 additions and 127 deletions
+12 -1
View File
@@ -19,6 +19,7 @@ func (l *LibraryElementService) registerAPIEndpoints() {
entities.Get("/", middleware.ReqSignedIn, routing.Wrap(l.getAllHandler))
entities.Get("/:uid", middleware.ReqSignedIn, routing.Wrap(l.getHandler))
entities.Get("/:uid/connections/", middleware.ReqSignedIn, routing.Wrap(l.getConnectionsHandler))
entities.Get("/name/:name", middleware.ReqSignedIn, routing.Wrap(l.getByNameHandler))
entities.Patch("/:uid", middleware.ReqSignedIn, binding.Bind(patchLibraryElementCommand{}), routing.Wrap(l.patchHandler))
})
}
@@ -45,7 +46,7 @@ func (l *LibraryElementService) deleteHandler(c *models.ReqContext) response.Res
// getHandler handles GET /api/library-elements/:uid.
func (l *LibraryElementService) getHandler(c *models.ReqContext) response.Response {
element, err := l.getLibraryElement(c, c.Params(":uid"))
element, err := l.getLibraryElementByUid(c)
if err != nil {
return toLibraryElementError(err, "Failed to get library element")
}
@@ -93,6 +94,16 @@ func (l *LibraryElementService) getConnectionsHandler(c *models.ReqContext) resp
return response.JSON(200, util.DynMap{"result": connections})
}
// getByNameHandler handles GET /api/library-elements/name/:name/.
func (l *LibraryElementService) getByNameHandler(c *models.ReqContext) response.Response {
elements, err := l.getLibraryElementsByName(c)
if err != nil {
return toLibraryElementError(err, "Failed to get library element")
}
return response.JSON(200, util.DynMap{"result": elements})
}
func toLibraryElementError(err error, message string) response.Response {
if errors.Is(err, errLibraryElementAlreadyExists) {
return response.Error(400, errLibraryElementAlreadyExists.Error(), err)