fix(region): add custom total count (#22398)

Co-authored-by: fourhu <fourhu@foxmail.com>
This commit is contained in:
屈轩
2025-04-10 16:07:17 +08:00
committed by GitHub
co-authored by fourhu
parent 2a0ac9d196
commit b02ef75216
@@ -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,