mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 20:50:19 +08:00
feat: only fetch created_time field to reduce data size in get-dashboard API (#3457)
This commit is contained in:
@ -36,6 +36,10 @@ type Dashboard struct {
|
|||||||
EnforcerCounts []int `json:"enforcerCounts"`
|
EnforcerCounts []int `json:"enforcerCounts"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DashboardDateItem struct {
|
||||||
|
CreatedTime string `json:"createTime"`
|
||||||
|
}
|
||||||
|
|
||||||
func GetDashboard(owner string) (*Dashboard, error) {
|
func GetDashboard(owner string) (*Dashboard, error) {
|
||||||
if owner == "All" {
|
if owner == "All" {
|
||||||
owner = ""
|
owner = ""
|
||||||
@ -58,26 +62,26 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
EnforcerCounts: make([]int, 31),
|
EnforcerCounts: make([]int, 31),
|
||||||
}
|
}
|
||||||
|
|
||||||
organizations := []Organization{}
|
organizations := []DashboardDateItem{}
|
||||||
users := []User{}
|
users := []DashboardDateItem{}
|
||||||
providers := []Provider{}
|
providers := []DashboardDateItem{}
|
||||||
applications := []Application{}
|
applications := []DashboardDateItem{}
|
||||||
subscriptions := []Subscription{}
|
subscriptions := []DashboardDateItem{}
|
||||||
roles := []Role{}
|
roles := []DashboardDateItem{}
|
||||||
groups := []Group{}
|
groups := []DashboardDateItem{}
|
||||||
resources := []Resource{}
|
resources := []DashboardDateItem{}
|
||||||
certs := []Cert{}
|
certs := []DashboardDateItem{}
|
||||||
permissions := []Permission{}
|
permissions := []DashboardDateItem{}
|
||||||
transactions := []Transaction{}
|
transactions := []DashboardDateItem{}
|
||||||
models := []Model{}
|
models := []DashboardDateItem{}
|
||||||
adapters := []Adapter{}
|
adapters := []DashboardDateItem{}
|
||||||
enforcers := []Enforcer{}
|
enforcers := []DashboardDateItem{}
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(14)
|
wg.Add(14)
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&organizations, &Organization{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Organization{}).Select("created_time").Find(&organizations, &Organization{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -85,7 +89,7 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
if err := ormer.Engine.Find(&users, &User{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&User{}).Select("created_time").Find(&users, &User{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -93,7 +97,7 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
if err := ormer.Engine.Find(&providers, &Provider{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Provider{}).Select("created_time").Find(&providers, &Provider{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -101,7 +105,7 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
if err := ormer.Engine.Find(&applications, &Application{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Application{}).Select("created_time").Find(&applications, &Application{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -109,7 +113,7 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
if err := ormer.Engine.Find(&subscriptions, &Subscription{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Subscription{}).Select("created_time").Find(&subscriptions, &Subscription{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -117,7 +121,7 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
if err := ormer.Engine.Find(&roles, &Role{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Role{}).Select("created_time").Find(&roles, &Role{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -125,56 +129,56 @@ func GetDashboard(owner string) (*Dashboard, error) {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
if err := ormer.Engine.Find(&groups, &Group{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Group{}).Find(&groups, &Group{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&resources, &Resource{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Resource{}).Select("created_time").Find(&resources, &Resource{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&certs, &Cert{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Cert{}).Select("created_time").Find(&certs, &Cert{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&permissions, &Permission{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Permission{}).Select("created_time").Find(&permissions, &Permission{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&transactions, &Transaction{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Transaction{}).Select("created_time").Find(&transactions, &Transaction{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&models, &Model{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Model{}).Select("created_time").Find(&models, &Model{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&adapters, &Adapter{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Adapter{}).Select("created_time").Find(&adapters, &Adapter{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := ormer.Engine.Find(&enforcers, &Enforcer{Owner: owner}); err != nil {
|
if err := ormer.Engine.Table(&Enforcer{}).Select("created_time").Find(&enforcers, &Enforcer{Owner: owner}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -302,6 +306,13 @@ func countCreatedBefore(objects interface{}, before time.Time) int {
|
|||||||
count++
|
count++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case []DashboardDateItem:
|
||||||
|
for _, e := range obj {
|
||||||
|
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", e.CreatedTime)
|
||||||
|
if createdTime.Before(before) {
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return count
|
return count
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user