Skip to content
This repository was archived by the owner on Jan 15, 2024. It is now read-only.

Commit a550215

Browse files
Fix update folder function (#75)
Make it match the actual API: https://grafana.com/docs/grafana/latest/http_api/folder/#update-folder
1 parent 0986ff3 commit a550215

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

folder.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ type Folder struct {
1414
URL string `json:"url"`
1515
}
1616

17+
type FolderPayload struct {
18+
Title string `json:"title"`
19+
UID string `json:"uid,omitempty"`
20+
Overwrite bool `json:"overwrite,omitempty"`
21+
}
22+
1723
// Folders fetches and returns Grafana folders.
1824
func (c *Client) Folders() ([]Folder, error) {
1925
folders := make([]Folder, 0)
@@ -54,13 +60,13 @@ func (c *Client) NewFolder(title string, uid ...string) (Folder, error) {
5460
}
5561

5662
folder := Folder{}
57-
dataMap := map[string]string{
58-
"title": title,
63+
payload := FolderPayload{
64+
Title: title,
5965
}
6066
if len(uid) == 1 {
61-
dataMap["uid"] = uid[0]
67+
payload.UID = uid[0]
6268
}
63-
data, err := json.Marshal(dataMap)
69+
data, err := json.Marshal(payload)
6470
if err != nil {
6571
return folder, err
6672
}
@@ -73,17 +79,21 @@ func (c *Client) NewFolder(title string, uid ...string) (Folder, error) {
7379
return folder, err
7480
}
7581

76-
// UpdateFolder updates the folder whose ID it's passed.
77-
func (c *Client) UpdateFolder(id string, name string) error {
78-
dataMap := map[string]string{
79-
"name": name,
82+
// UpdateFolder updates the folder whose UID it's passed.
83+
func (c *Client) UpdateFolder(uid string, title string, newUID ...string) error {
84+
payload := FolderPayload{
85+
Title: title,
86+
Overwrite: true,
87+
}
88+
if len(newUID) == 1 {
89+
payload.UID = newUID[0]
8090
}
81-
data, err := json.Marshal(dataMap)
91+
data, err := json.Marshal(payload)
8292
if err != nil {
8393
return err
8494
}
8595

86-
return c.request("PUT", fmt.Sprintf("/api/folders/%s", id), nil, bytes.NewBuffer(data), nil)
96+
return c.request("PUT", fmt.Sprintf("/api/folders/%s", uid), nil, bytes.NewBuffer(data), nil)
8797
}
8898

8999
// DeleteFolder deletes the folder whose ID it's passed.

0 commit comments

Comments
 (0)