mirror of https://github.com/grafana/grafana.git
87 lines
1.9 KiB
Go
87 lines
1.9 KiB
Go
package store
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"text/template"
|
|
|
|
"github.com/grafana/grafana/pkg/storage/legacysql"
|
|
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate"
|
|
)
|
|
|
|
var (
|
|
//go:embed *.sql
|
|
sqlTemplatesFS embed.FS
|
|
sqlTemplates = template.Must(template.New("sql").ParseFS(sqlTemplatesFS, `*.sql`))
|
|
|
|
sqlQueryBasicRoles = mustTemplate("basic_role_query.sql")
|
|
sqlUserIdentifiers = mustTemplate("user_identifier_query.sql")
|
|
sqlFolders = mustTemplate("folder_query.sql")
|
|
)
|
|
|
|
func mustTemplate(filename string) *template.Template {
|
|
if t := sqlTemplates.Lookup(filename); t != nil {
|
|
return t
|
|
}
|
|
panic(fmt.Sprintf("template file not found: %s", filename))
|
|
}
|
|
|
|
type getUserIdentifiers struct {
|
|
sqltemplate.SQLTemplate
|
|
Query *UserIdentifierQuery
|
|
|
|
UserTable string
|
|
}
|
|
|
|
func (r getUserIdentifiers) Validate() error {
|
|
return nil
|
|
}
|
|
|
|
func newGetUserIdentifiers(sql *legacysql.LegacyDatabaseHelper, q *UserIdentifierQuery) getUserIdentifiers {
|
|
return getUserIdentifiers{
|
|
SQLTemplate: sqltemplate.New(sql.DialectForDriver()),
|
|
Query: q,
|
|
UserTable: sql.Table("user"),
|
|
}
|
|
}
|
|
|
|
type getBasicRolesQuery struct {
|
|
sqltemplate.SQLTemplate
|
|
Query *BasicRoleQuery
|
|
|
|
UserTable string
|
|
OrgUserTable string
|
|
}
|
|
|
|
func (r getBasicRolesQuery) Validate() error {
|
|
return nil
|
|
}
|
|
|
|
func newGetBasicRoles(sql *legacysql.LegacyDatabaseHelper, q *BasicRoleQuery) getBasicRolesQuery {
|
|
return getBasicRolesQuery{
|
|
SQLTemplate: sqltemplate.New(sql.DialectForDriver()),
|
|
Query: q,
|
|
UserTable: sql.Table("user"),
|
|
OrgUserTable: sql.Table("org_user"),
|
|
}
|
|
}
|
|
|
|
type getFoldersQuery struct {
|
|
sqltemplate.SQLTemplate
|
|
Query *FolderQuery
|
|
|
|
FolderTable string
|
|
}
|
|
|
|
func (r getFoldersQuery) Validate() error {
|
|
return nil
|
|
}
|
|
|
|
func newGetFolders(sql *legacysql.LegacyDatabaseHelper, q *FolderQuery) getFoldersQuery {
|
|
return getFoldersQuery{
|
|
SQLTemplate: sqltemplate.New(sql.DialectForDriver()),
|
|
Query: q,
|
|
FolderTable: sql.Table("folder"),
|
|
}
|
|
}
|