2018-02-07 10:54:21 -06:00
|
|
|
package sqlstore
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
|
2020-02-29 06:35:15 -06:00
|
|
|
"github.com/grafana/grafana/pkg/models"
|
2022-08-10 03:32:03 -05:00
|
|
|
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
|
|
"github.com/grafana/grafana/pkg/services/sqlstore/permissions"
|
2022-08-10 04:56:48 -05:00
|
|
|
"github.com/grafana/grafana/pkg/services/user"
|
2022-08-10 03:32:03 -05:00
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
2018-02-07 10:54:21 -06:00
|
|
|
)
|
|
|
|
|
2022-08-10 03:32:03 -05:00
|
|
|
func NewSqlBuilder(cfg *setting.Cfg) SQLBuilder {
|
|
|
|
return SQLBuilder{cfg: cfg}
|
|
|
|
}
|
|
|
|
|
2020-11-10 23:21:08 -06:00
|
|
|
type SQLBuilder struct {
|
2022-08-10 03:32:03 -05:00
|
|
|
cfg *setting.Cfg
|
2018-02-07 10:54:21 -06:00
|
|
|
sql bytes.Buffer
|
|
|
|
params []interface{}
|
|
|
|
}
|
|
|
|
|
2020-11-10 23:21:08 -06:00
|
|
|
func (sb *SQLBuilder) Write(sql string, params ...interface{}) {
|
2018-02-16 06:56:04 -06:00
|
|
|
sb.sql.WriteString(sql)
|
|
|
|
|
|
|
|
if len(params) > 0 {
|
|
|
|
sb.params = append(sb.params, params...)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-10 23:21:08 -06:00
|
|
|
func (sb *SQLBuilder) GetSQLString() string {
|
2018-02-16 06:56:04 -06:00
|
|
|
return sb.sql.String()
|
|
|
|
}
|
|
|
|
|
2021-02-24 07:06:22 -06:00
|
|
|
func (sb *SQLBuilder) GetParams() []interface{} {
|
|
|
|
return sb.params
|
|
|
|
}
|
|
|
|
|
2020-11-10 23:21:08 -06:00
|
|
|
func (sb *SQLBuilder) AddParams(params ...interface{}) {
|
2018-02-16 06:56:04 -06:00
|
|
|
sb.params = append(sb.params, params...)
|
|
|
|
}
|
|
|
|
|
2022-08-10 04:56:48 -05:00
|
|
|
func (sb *SQLBuilder) WriteDashboardPermissionFilter(user *user.SignedInUser, permission models.PermissionType) {
|
2022-08-10 03:32:03 -05:00
|
|
|
var (
|
|
|
|
sql string
|
|
|
|
params []interface{}
|
|
|
|
)
|
|
|
|
if !ac.IsDisabled(sb.cfg) {
|
|
|
|
sql, params = permissions.NewAccessControlDashboardPermissionFilter(user, permission, "").Where()
|
|
|
|
} else {
|
|
|
|
sql, params = permissions.DashboardPermissionFilter{
|
|
|
|
OrgRole: user.OrgRole,
|
|
|
|
Dialect: dialect,
|
2022-08-11 06:28:55 -05:00
|
|
|
UserId: user.UserID,
|
|
|
|
OrgId: user.OrgID,
|
2022-08-10 03:32:03 -05:00
|
|
|
PermissionLevel: permission,
|
|
|
|
}.Where()
|
2018-02-07 10:54:21 -06:00
|
|
|
}
|
|
|
|
|
2022-08-10 03:32:03 -05:00
|
|
|
sb.sql.WriteString(" AND " + sql)
|
|
|
|
sb.params = append(sb.params, params...)
|
2018-02-07 10:54:21 -06:00
|
|
|
}
|