Browse Source

查询规则添加回调

yjp 1 month ago
parent
commit
829f67fce8
1 changed files with 14 additions and 3 deletions
  1. 14 3
      convenient/domain/query_rule/query_rule.go

+ 14 - 3
convenient/domain/query_rule/query_rule.go

@@ -69,19 +69,21 @@ type FormAdditionalSelectClausesFunc func(queryParams AdvanceQueryParams) ([]str
 type FormAdditionalFromFunc func(queryParams AdvanceQueryParams) ([]clause.Clause, error)
 type FormAdditionalConditionsFunc func(queryParams AdvanceQueryParams) (clause.Clause, error)
 type FormOtherClausesFunc func(queryParams AdvanceQueryParams) ([]clause.Clause, error)
+type PostQueryFunc[O any] func(queryParams AdvanceQueryParams, infos []O, i *infrastructure.Infrastructure) ([]O, error)
 
-type AddUseQueryRuleQueryRouteParams struct {
+type AddUseQueryRuleQueryRouteParams[O any] struct {
 	DBSchema                        string
 	QueryParams                     AdvanceQueryParams
 	FormAdditionalSelectClausesFunc FormAdditionalSelectClausesFunc
 	FormAdditionalFromFunc          FormAdditionalFromFunc
 	FormAdditionalConditionsFunc    FormAdditionalConditionsFunc
 	FormOtherClausesFunc            FormOtherClausesFunc
+	PostQueryFunc                   PostQueryFunc[O]
 	Object                          domain.Object
 	QueryMiddlewares                []binding.Middleware
 }
 
-func (params *AddUseQueryRuleQueryRouteParams) check() error {
+func (params *AddUseQueryRuleQueryRouteParams[O]) check() error {
 	if params.DBSchema == "" {
 		return errors.New("没有传递DBSchema")
 	}
@@ -93,7 +95,7 @@ func (params *AddUseQueryRuleQueryRouteParams) check() error {
 	return nil
 }
 
-func AddUseQueryRuleQueryRoute[O any](binder *binding.Binder, addParams *AddUseQueryRuleQueryRouteParams) error {
+func AddUseQueryRuleQueryRoute[O any](binder *binding.Binder, addParams *AddUseQueryRuleQueryRouteParams[O]) error {
 	err := addParams.check()
 	if err != nil {
 		return err
@@ -236,6 +238,15 @@ func AddUseQueryRuleQueryRoute[O any](binder *binding.Binder, addParams *AddUseQ
 				return errResponse, err
 			}
 
+			if addParams.PostQueryFunc != nil {
+				innerInfos, err := addParams.PostQueryFunc(queryParams, infos, i)
+				if err != nil {
+					return errResponse, err
+				}
+
+				infos = innerInfos
+			}
+
 			return response.InfosData[O]{
 				Infos:      infos,
 				TotalCount: countResults[0].ColumnValueInt64("total"),