2018-01-29 06:51:01 -06:00
|
|
|
package models
|
|
|
|
|
|
|
|
import (
|
2018-02-01 14:00:37 -06:00
|
|
|
"strings"
|
2018-01-29 06:51:01 -06:00
|
|
|
"time"
|
2022-08-10 04:56:48 -05:00
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/services/user"
|
2018-01-29 06:51:01 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
type Folder struct {
|
|
|
|
Id int64
|
2018-02-01 14:00:37 -06:00
|
|
|
Uid string
|
2018-01-29 06:51:01 -06:00
|
|
|
Title string
|
2018-02-01 14:00:37 -06:00
|
|
|
Url string
|
2018-01-29 06:51:01 -06:00
|
|
|
Version int
|
|
|
|
|
|
|
|
Created time.Time
|
|
|
|
Updated time.Time
|
|
|
|
|
|
|
|
UpdatedBy int64
|
|
|
|
CreatedBy int64
|
2022-07-18 08:14:58 -05:00
|
|
|
HasACL bool
|
2018-01-29 06:51:01 -06:00
|
|
|
}
|
|
|
|
|
2022-03-14 10:21:42 -05:00
|
|
|
// NewFolder creates a new Folder
|
|
|
|
func NewFolder(title string) *Folder {
|
|
|
|
folder := &Folder{}
|
|
|
|
folder.Title = title
|
|
|
|
folder.Created = time.Now()
|
|
|
|
folder.Updated = time.Now()
|
|
|
|
return folder
|
|
|
|
}
|
|
|
|
|
|
|
|
// DashboardToFolder converts Dashboard to Folder
|
|
|
|
func DashboardToFolder(dash *Dashboard) *Folder {
|
|
|
|
return &Folder{
|
|
|
|
Id: dash.Id,
|
|
|
|
Uid: dash.Uid,
|
|
|
|
Title: dash.Title,
|
2022-07-18 08:14:58 -05:00
|
|
|
HasACL: dash.HasACL,
|
2022-03-14 10:21:42 -05:00
|
|
|
Url: dash.GetUrl(),
|
|
|
|
Version: dash.Version,
|
|
|
|
Created: dash.Created,
|
|
|
|
CreatedBy: dash.CreatedBy,
|
|
|
|
Updated: dash.Updated,
|
|
|
|
UpdatedBy: dash.UpdatedBy,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-02-01 14:00:37 -06:00
|
|
|
// UpdateDashboardModel updates an existing model from command into model for update
|
2018-02-20 06:55:43 -06:00
|
|
|
func (cmd *UpdateFolderCommand) UpdateDashboardModel(dashFolder *Dashboard, orgId int64, userId int64) {
|
|
|
|
dashFolder.OrgId = orgId
|
2018-02-01 14:00:37 -06:00
|
|
|
dashFolder.Title = strings.TrimSpace(cmd.Title)
|
2018-02-20 06:55:43 -06:00
|
|
|
dashFolder.Data.Set("title", dashFolder.Title)
|
|
|
|
|
|
|
|
if cmd.Uid != "" {
|
|
|
|
dashFolder.SetUid(cmd.Uid)
|
|
|
|
}
|
2018-02-01 14:00:37 -06:00
|
|
|
|
2018-02-20 06:55:43 -06:00
|
|
|
dashFolder.SetVersion(cmd.Version)
|
|
|
|
dashFolder.IsFolder = true
|
2018-02-01 14:00:37 -06:00
|
|
|
|
|
|
|
if userId == 0 {
|
|
|
|
userId = -1
|
|
|
|
}
|
|
|
|
|
|
|
|
dashFolder.UpdatedBy = userId
|
|
|
|
dashFolder.UpdateSlug()
|
|
|
|
}
|
|
|
|
|
2018-01-29 06:51:01 -06:00
|
|
|
//
|
|
|
|
// COMMANDS
|
|
|
|
//
|
|
|
|
|
|
|
|
type CreateFolderCommand struct {
|
2018-02-21 04:24:54 -06:00
|
|
|
Uid string `json:"uid"`
|
|
|
|
Title string `json:"title"`
|
2018-01-29 06:51:01 -06:00
|
|
|
|
2022-02-08 06:38:43 -06:00
|
|
|
Result *Folder `json:"-"`
|
2018-01-29 06:51:01 -06:00
|
|
|
}
|
|
|
|
|
2022-11-10 08:06:52 -06:00
|
|
|
type MoveFolderCommand struct {
|
|
|
|
ParentUID *string `json:"parentUid"`
|
|
|
|
}
|
|
|
|
|
2018-01-29 06:51:01 -06:00
|
|
|
type UpdateFolderCommand struct {
|
2022-11-10 07:28:55 -06:00
|
|
|
Uid string `json:"uid"`
|
|
|
|
Title string `json:"title"`
|
|
|
|
Version int `json:"version"`
|
|
|
|
Description string `json:"description"`
|
|
|
|
Overwrite bool `json:"overwrite"`
|
2018-01-29 06:51:01 -06:00
|
|
|
|
2022-02-08 06:38:43 -06:00
|
|
|
Result *Folder `json:"-"`
|
2018-01-29 06:51:01 -06:00
|
|
|
}
|
2018-04-30 08:34:31 -05:00
|
|
|
|
|
|
|
//
|
|
|
|
// QUERIES
|
|
|
|
//
|
|
|
|
|
|
|
|
type HasEditPermissionInFoldersQuery struct {
|
2022-08-10 04:56:48 -05:00
|
|
|
SignedInUser *user.SignedInUser
|
2018-04-30 08:34:31 -05:00
|
|
|
Result bool
|
|
|
|
}
|
2019-08-12 13:03:48 -05:00
|
|
|
|
2022-07-04 04:43:06 -05:00
|
|
|
type HasAdminPermissionInDashboardsOrFoldersQuery struct {
|
2022-08-10 04:56:48 -05:00
|
|
|
SignedInUser *user.SignedInUser
|
2019-08-12 13:03:48 -05:00
|
|
|
Result bool
|
|
|
|
}
|