Documentation
¶
Index ¶
- Constants
- Variables
- type CreateFolderCommand
- type DeleteFolderCommand
- type Folder
- type FolderDTO
- type FolderStore
- type GetChildrenQuery
- type GetFolderQuery
- type GetParentsQuery
- type HasAdminPermissionInDashboardsOrFoldersQuery
- type HasEditPermissionInFoldersQuery
- type MoveFolderCommand
- type Service
- type UpdateFolderCommand
Constants ¶
const ( GeneralFolderUID = "general" RootFolderUID = "" MaxNestedFolderDepth = 8 )
Variables ¶
var ErrBadRequest = errutil.NewBase(errutil.StatusBadRequest, "folder.bad-request")
var ErrCircularReference = errutil.NewBase(errutil.StatusBadRequest, "folder.circular-reference", errutil.WithPublicMessage("Circular reference detected"))
var ErrDatabaseError = errutil.NewBase(errutil.StatusInternal, "folder.database-error")
var ErrFolderNotFound = errutil.NewBase(errutil.StatusNotFound, "folder.notFound")
var ErrFolderTooDeep = errutil.NewBase(errutil.StatusInternal, "folder.too-deep")
var ErrInternal = errutil.NewBase(errutil.StatusInternal, "folder.internal")
var ErrMaximumDepthReached = errutil.NewBase(errutil.StatusBadRequest, "folder.maximum-depth-reached", errutil.WithPublicMessage("Maximum nested folder depth reached"))
var GeneralFolder = Folder{ID: 0, Title: "General"}
Functions ¶
This section is empty.
Types ¶
type CreateFolderCommand ¶
type CreateFolderCommand struct {
UID string `json:"uid"`
OrgID int64 `json:"-"`
Title string `json:"title"`
Description string `json:"description"`
ParentUID string `json:"parentUid"`
SignedInUser *user.SignedInUser `json:"-"`
}
CreateFolderCommand captures the information required by the folder service to create a folder.
type DeleteFolderCommand ¶
type DeleteFolderCommand struct {
UID string `json:"uid" xorm:"uid"`
OrgID int64 `json:"orgId" xorm:"org_id"`
ForceDeleteRules bool `json:"forceDeleteRules"`
SignedInUser *user.SignedInUser `json:"-"`
}
DeleteFolderCommand captures the information required by the folder service to delete a folder.
type Folder ¶
type Folder struct {
ID int64 `xorm:"pk autoincr 'id'"`
OrgID int64 `xorm:"org_id"`
UID string `xorm:"uid"`
ParentUID string `xorm:"parent_uid"`
Title string
Description string
Created time.Time
Updated time.Time
// TODO: validate if this field is required/relevant to folders.
// currently there is no such column
Version int
URL string
UpdatedBy int64
CreatedBy int64
HasACL bool
}
type FolderStore ¶
type FolderStore interface {
// GetFolderByTitle retrieves a folder by its title
GetFolderByTitle(ctx context.Context, orgID int64, title string) (*Folder, error)
// GetFolderByUID retrieves a folder by its UID
GetFolderByUID(ctx context.Context, orgID int64, uid string) (*Folder, error)
// GetFolderByID retrieves a folder by its ID
GetFolderByID(ctx context.Context, orgID int64, id int64) (*Folder, error)
}
FolderStore is a folder store.
type GetChildrenQuery ¶
type GetFolderQuery ¶
type GetFolderQuery struct {
UID *string
ID *int64
Title *string
OrgID int64
SignedInUser *user.SignedInUser `json:"-"`
}
GetFolderQuery is used for all folder Get requests. Only one of UID, ID, or Title should be set; if multilpe fields are set by the caller the dashboard service will select the field with the most specificity, in order: ID, UID, Title.
type GetParentsQuery ¶
GetParentsQuery captures the information required by the folder service to return a list of all parent folders of a given folder.
type HasAdminPermissionInDashboardsOrFoldersQuery ¶
type HasAdminPermissionInDashboardsOrFoldersQuery struct {
SignedInUser *user.SignedInUser
}
type HasEditPermissionInFoldersQuery ¶
type HasEditPermissionInFoldersQuery struct {
SignedInUser *user.SignedInUser
}
type MoveFolderCommand ¶
type MoveFolderCommand struct {
UID string `json:"-"`
NewParentUID string `json:"parentUid"`
OrgID int64 `json:"-"`
SignedInUser *user.SignedInUser `json:"-"`
}
MoveFolderCommand captures the information required by the folder service to move a folder.
type Service ¶
type Service interface {
// GetChildren returns an array containing all child folders.
GetChildren(ctx context.Context, cmd *GetChildrenQuery) ([]*Folder, error)
// GetParents returns an array containing add parent folders if nested folders are enabled
// otherwise it returns an empty array
GetParents(ctx context.Context, q GetParentsQuery) ([]*Folder, error)
Create(ctx context.Context, cmd *CreateFolderCommand) (*Folder, error)
// GetFolder takes a GetFolderCommand and returns a folder matching the
// request. One of ID, UID, or Title must be included. If multiple values
// are included in the request, Grafana will select one in order of
// specificity (ID, UID, Title).
Get(ctx context.Context, cmd *GetFolderQuery) (*Folder, error)
// Update is used to update a folder's UID, Title and Description. To change
// a folder's parent folder, use Move.
Update(ctx context.Context, cmd *UpdateFolderCommand) (*Folder, error)
Delete(ctx context.Context, cmd *DeleteFolderCommand) error
MakeUserAdmin(ctx context.Context, orgID int64, userID, folderID int64, setViewAndEditPermissions bool) error
// Move changes a folder's parent folder to the requested new parent.
Move(ctx context.Context, cmd *MoveFolderCommand) (*Folder, error)
}
type UpdateFolderCommand ¶
type UpdateFolderCommand struct {
UID string `json:"-"`
OrgID int64 `json:"-"`
// NewUID it's an optional parameter used for overriding the existing folder UID
NewUID *string `json:"uid"` // keep same json tag with the legacy command for not breaking the existing APIs
// NewTitle it's an optional parameter used for overriding the existing folder title
NewTitle *string `json:"title"` // keep same json tag with the legacy command for not breaking the existing APIs
// NewDescription it's an optional parameter used for overriding the existing folder description
NewDescription *string `json:"description"` // keep same json tag with the legacy command for not breaking the existing APIs
NewParentUID *string `json:"-"`
// Version only used by the legacy folder implementation
Version int `json:"version"`
// Overwrite only used by the legacy folder implementation
Overwrite bool `json:"overwrite"`
SignedInUser *user.SignedInUser `json:"-"`
}
UpdateFolderCommand captures the information required by the folder service to update a folder. Use Move to update a folder's parent folder.