mirror of
https://github.com/grafana/grafana.git
synced 2024-11-29 12:14:08 -06:00
131 lines
3.0 KiB
Go
131 lines
3.0 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
"time"
|
|
)
|
|
|
|
var ErrInvalidQuotaTarget = errors.New("Invalid quota target")
|
|
|
|
type Quota struct {
|
|
Id int64
|
|
OrgId int64
|
|
UserId int64
|
|
Target string
|
|
Limit int64
|
|
Created time.Time
|
|
Updated time.Time
|
|
}
|
|
|
|
type QuotaScope struct {
|
|
Name string
|
|
Target string
|
|
DefaultLimit int64
|
|
}
|
|
|
|
type OrgQuotaDTO struct {
|
|
OrgId int64 `json:"org_id"`
|
|
Target string `json:"target"`
|
|
Limit int64 `json:"limit"`
|
|
Used int64 `json:"used"`
|
|
}
|
|
|
|
type UserQuotaDTO struct {
|
|
UserId int64 `json:"user_id"`
|
|
Target string `json:"target"`
|
|
Limit int64 `json:"limit"`
|
|
Used int64 `json:"used"`
|
|
}
|
|
|
|
type GlobalQuotaDTO struct {
|
|
Target string `json:"target"`
|
|
Limit int64 `json:"limit"`
|
|
Used int64 `json:"used"`
|
|
}
|
|
|
|
type GetOrgQuotaByTargetQuery struct {
|
|
Target string
|
|
OrgId int64
|
|
Default int64
|
|
Result *OrgQuotaDTO
|
|
}
|
|
|
|
type GetOrgQuotasQuery struct {
|
|
OrgId int64
|
|
Result []*OrgQuotaDTO
|
|
}
|
|
|
|
type GetUserQuotaByTargetQuery struct {
|
|
Target string
|
|
UserId int64
|
|
Default int64
|
|
Result *UserQuotaDTO
|
|
}
|
|
|
|
type GetUserQuotasQuery struct {
|
|
UserId int64
|
|
Result []*UserQuotaDTO
|
|
}
|
|
|
|
type GetGlobalQuotaByTargetQuery struct {
|
|
Target string
|
|
Default int64
|
|
Result *GlobalQuotaDTO
|
|
}
|
|
|
|
type UpdateOrgQuotaCmd struct {
|
|
Target string `json:"target"`
|
|
Limit int64 `json:"limit"`
|
|
OrgId int64 `json:"-"`
|
|
}
|
|
|
|
type UpdateUserQuotaCmd struct {
|
|
Target string `json:"target"`
|
|
Limit int64 `json:"limit"`
|
|
UserId int64 `json:"-"`
|
|
}
|
|
|
|
func GetQuotaScopes(target string) ([]QuotaScope, error) {
|
|
scopes := make([]QuotaScope, 0)
|
|
switch target {
|
|
case "user":
|
|
scopes = append(scopes,
|
|
QuotaScope{Name: "global", Target: target, DefaultLimit: setting.Quota.Global.User},
|
|
QuotaScope{Name: "org", Target: "org_user", DefaultLimit: setting.Quota.Org.User},
|
|
)
|
|
return scopes, nil
|
|
case "org":
|
|
scopes = append(scopes,
|
|
QuotaScope{Name: "global", Target: target, DefaultLimit: setting.Quota.Global.Org},
|
|
QuotaScope{Name: "user", Target: "org_user", DefaultLimit: setting.Quota.User.Org},
|
|
)
|
|
return scopes, nil
|
|
case "dashboard":
|
|
scopes = append(scopes,
|
|
QuotaScope{Name: "global", Target: target, DefaultLimit: setting.Quota.Global.Dashboard},
|
|
QuotaScope{Name: "org", Target: target, DefaultLimit: setting.Quota.Org.Dashboard},
|
|
)
|
|
return scopes, nil
|
|
case "data_source":
|
|
scopes = append(scopes,
|
|
QuotaScope{Name: "global", Target: target, DefaultLimit: setting.Quota.Global.DataSource},
|
|
QuotaScope{Name: "org", Target: target, DefaultLimit: setting.Quota.Org.DataSource},
|
|
)
|
|
return scopes, nil
|
|
case "api_key":
|
|
scopes = append(scopes,
|
|
QuotaScope{Name: "global", Target: target, DefaultLimit: setting.Quota.Global.ApiKey},
|
|
QuotaScope{Name: "org", Target: target, DefaultLimit: setting.Quota.Org.ApiKey},
|
|
)
|
|
return scopes, nil
|
|
case "session":
|
|
scopes = append(scopes,
|
|
QuotaScope{Name: "global", Target: target, DefaultLimit: setting.Quota.Global.Session},
|
|
)
|
|
return scopes, nil
|
|
default:
|
|
return scopes, ErrInvalidQuotaTarget
|
|
}
|
|
}
|