From 86ed85aa6e66916b5cdc1068fb9d49b245a360fb Mon Sep 17 00:00:00 2001 From: woodsaj Date: Tue, 15 Sep 2015 17:18:26 +0800 Subject: [PATCH] move toMap function to be a method on the quota structs --- pkg/models/quotas.go | 24 ----------------------- pkg/services/sqlstore/quota.go | 4 ++-- pkg/setting/setting_quota.go | 36 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/pkg/models/quotas.go b/pkg/models/quotas.go index ba17b848403..85159d830d1 100644 --- a/pkg/models/quotas.go +++ b/pkg/models/quotas.go @@ -3,7 +3,6 @@ package models import ( "errors" "github.com/grafana/grafana/pkg/setting" - "reflect" "time" ) @@ -129,26 +128,3 @@ func GetQuotaScopes(target string) ([]QuotaScope, error) { return scopes, ErrInvalidQuotaTarget } } - -func QuotaToMap(q interface{}) map[string]int64 { - qMap := make(map[string]int64) - typ := reflect.TypeOf(q) - val := reflect.ValueOf(q) - if typ.Kind() == reflect.Ptr { - typ = typ.Elem() - val = val.Elem() - } - for i := 0; i < typ.NumField(); i++ { - field := typ.Field(i) - name := field.Tag.Get("target") - if name == "" { - name = field.Name - } - if name == "-" { - continue - } - value := val.Field(i) - qMap[name] = value.Int() - } - return qMap -} diff --git a/pkg/services/sqlstore/quota.go b/pkg/services/sqlstore/quota.go index afc3c028dcf..53ea8889c56 100644 --- a/pkg/services/sqlstore/quota.go +++ b/pkg/services/sqlstore/quota.go @@ -57,7 +57,7 @@ func GetOrgQuotas(query *m.GetOrgQuotasQuery) error { return err } - defaultQuotas := m.QuotaToMap(setting.Quota.Org) + defaultQuotas := setting.Quota.Org.ToMap() seenTargets := make(map[string]bool) for _, q := range quotas { @@ -157,7 +157,7 @@ func GetUserQuotas(query *m.GetUserQuotasQuery) error { return err } - defaultQuotas := m.QuotaToMap(setting.Quota.User) + defaultQuotas := setting.Quota.User.ToMap() seenTargets := make(map[string]bool) for _, q := range quotas { diff --git a/pkg/setting/setting_quota.go b/pkg/setting/setting_quota.go index df412fe23e4..49769d9930f 100644 --- a/pkg/setting/setting_quota.go +++ b/pkg/setting/setting_quota.go @@ -1,5 +1,9 @@ package setting +import ( + "reflect" +) + type OrgQuota struct { User int64 `target:"org_user"` DataSource int64 `target:"data_source"` @@ -20,6 +24,38 @@ type GlobalQuota struct { Session int64 `target:"-"` } +func (q *OrgQuota) ToMap() map[string]int64 { + return quotaToMap(*q) +} + +func (q *UserQuota) ToMap() map[string]int64 { + return quotaToMap(*q) +} + +func (q *GlobalQuota) ToMap() map[string]int64 { + return quotaToMap(*q) +} + +func quotaToMap(q interface{}) map[string]int64 { + qMap := make(map[string]int64) + typ := reflect.TypeOf(q) + val := reflect.ValueOf(q) + + for i := 0; i < typ.NumField(); i++ { + field := typ.Field(i) + name := field.Tag.Get("target") + if name == "" { + name = field.Name + } + if name == "-" { + continue + } + value := val.Field(i) + qMap[name] = value.Int() + } + return qMap +} + type QuotaSettings struct { Enabled bool Org *OrgQuota