mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix(region): add custom total count (#22398)
Co-authored-by: fourhu <fourhu@foxmail.com>
This commit is contained in:
@@ -16,6 +16,7 @@ package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/errors"
|
||||
@@ -155,6 +156,27 @@ func (manager *SStatusInfrasResourceBaseManager) QueryDistinctExtraField(q *sqlc
|
||||
return q, httperrors.ErrNotFound
|
||||
}
|
||||
|
||||
func (manager *SStatusInfrasResourceBaseManager) CustomizedTotalCount(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, totalQ *sqlchemy.SQuery) (int, jsonutils.JSONObject, error) {
|
||||
results := struct {
|
||||
apis.TotalCountBase
|
||||
StatusInfo []apis.StatusStatisticStatusInfo
|
||||
}{}
|
||||
|
||||
err := totalQ.First(&results.TotalCountBase)
|
||||
if err != nil && errors.Cause(err) != sql.ErrNoRows {
|
||||
return -1, nil, errors.Wrapf(err, "First")
|
||||
}
|
||||
|
||||
totalSQ := totalQ.ResetFields().SubQuery()
|
||||
statQ := totalSQ.Query(totalSQ.Field("status"), sqlchemy.COUNT("total_count", totalSQ.Field("id")))
|
||||
statQ = statQ.GroupBy(totalSQ.Field("status"))
|
||||
err = statQ.All(&results.StatusInfo)
|
||||
if err != nil {
|
||||
return -1, nil, errors.Wrapf(err, "status query")
|
||||
}
|
||||
return results.Count, jsonutils.Marshal(results), nil
|
||||
}
|
||||
|
||||
func (manager *SStatusInfrasResourceBaseManager) FetchCustomizeColumns(
|
||||
ctx context.Context,
|
||||
userCred mcclient.TokenCredential,
|
||||
|
||||
Reference in New Issue
Block a user