Revision c42a546055737158f9fe7548d877f23253dfdc1b authored by Jack Baldry on 07 July 2022, 18:02:35 UTC, committed by grafanabot on 07 July 2022, 18:03:59 UTC
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
(cherry picked from commit 1976edaffcd64f2ba6dc5b38a63f91d01f7a29f1)
1 parent 91585c7
Raw File
search.go
package models

import (
	"strings"

	"github.com/grafana/grafana/pkg/services/sqlstore/searchstore"
)

type SortOption struct {
	Name        string
	DisplayName string
	Description string
	Index       int
	MetaName    string
	Filter      []SortOptionFilter
}

type SortOptionFilter interface {
	searchstore.FilterOrderBy
}

type FindPersistedDashboardsQuery struct {
	Title         string
	OrgId         int64
	SignedInUser  *SignedInUser
	IsStarred     bool
	DashboardIds  []int64
	DashboardUIDs []string
	Type          string
	FolderIds     []int64
	Tags          []string
	Limit         int64
	Page          int64
	Permission    PermissionType
	Sort          SortOption

	Filters []interface{}

	Result HitList
}

type HitType string

const (
	DashHitDB     HitType = "dash-db"
	DashHitHome   HitType = "dash-home"
	DashHitFolder HitType = "dash-folder"
)

type Hit struct {
	ID           int64    `json:"id"`
	UID          string   `json:"uid"`
	Title        string   `json:"title"`
	URI          string   `json:"uri"`
	URL          string   `json:"url"`
	Slug         string   `json:"slug"`
	Type         HitType  `json:"type"`
	Tags         []string `json:"tags"`
	IsStarred    bool     `json:"isStarred"`
	FolderID     int64    `json:"folderId,omitempty"`
	FolderUID    string   `json:"folderUid,omitempty"`
	FolderTitle  string   `json:"folderTitle,omitempty"`
	FolderURL    string   `json:"folderUrl,omitempty"`
	SortMeta     int64    `json:"sortMeta"`
	SortMetaName string   `json:"sortMetaName,omitempty"`
}

type HitList []*Hit

func (s HitList) Len() int      { return len(s) }
func (s HitList) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s HitList) Less(i, j int) bool {
	if s[i].Type == "dash-folder" && s[j].Type == "dash-db" {
		return true
	}

	if s[i].Type == "dash-db" && s[j].Type == "dash-folder" {
		return false
	}

	return strings.ToLower(s[i].Title) < strings.ToLower(s[j].Title)
}
back to top