yjp 1 жил өмнө
parent
commit
6c50f03197

+ 5 - 5
convenient/entity_crud/simple.go

@@ -260,7 +260,7 @@ func WithCreateCallbacks(callbacks *CreateCallbacks) CreateOption {
 	}
 }
 
-func WithCreateMiddlewares(middlewares []binding.Middleware) CreateOption {
+func WithCreateMiddlewares(middlewares ...binding.Middleware) CreateOption {
 	return func(options *CreateOptions) {
 		options.middlewares = middlewares
 	}
@@ -284,7 +284,7 @@ func WithDeleteCallbacks(callbacks *DeleteCallbacks) DeleteOption {
 	}
 }
 
-func WithDeleteMiddlewares(middlewares []binding.Middleware) DeleteOption {
+func WithDeleteMiddlewares(middlewares ...binding.Middleware) DeleteOption {
 	return func(options *DeleteOptions) {
 		options.middlewares = middlewares
 	}
@@ -308,7 +308,7 @@ func WithUpdateCallbacks(callbacks *UpdateCallbacks) UpdateOption {
 	}
 }
 
-func WithUpdateMiddlewares(middlewares []binding.Middleware) UpdateOption {
+func WithUpdateMiddlewares(middlewares ...binding.Middleware) UpdateOption {
 	return func(options *UpdateOptions) {
 		options.middlewares = middlewares
 	}
@@ -332,7 +332,7 @@ func WithQueryCallbacks[I any](callbacks *QueryCallbacks[I]) QueryOption[I] {
 	}
 }
 
-func WithQueryMiddlewares[I any](middlewares []binding.Middleware) QueryOption[I] {
+func WithQueryMiddlewares[I any](middlewares ...binding.Middleware) QueryOption[I] {
 	return func(options *QueryOptions[I]) {
 		options.middlewares = middlewares
 	}
@@ -350,7 +350,7 @@ func WithGetByIDCallbacks[I any](callbacks *GetByIDCallbacks[I]) GetByIDOption[I
 	}
 }
 
-func WithGetByIDMiddlewares[I any](middlewares []binding.Middleware) GetByIDOption[I] {
+func WithGetByIDMiddlewares[I any](middlewares ...binding.Middleware) GetByIDOption[I] {
 	return func(options *GetByIDOptions[I]) {
 		options.middlewares = middlewares
 	}

+ 40 - 4
convenient/relation/many2many/simple.go

@@ -64,7 +64,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					leftTableName, simple.Left.DomainCNName(), leftRelationFieldName, leftRelationColumnName,
 					rightTableName, rightRelationColumnName),
-			})
+			}, options.leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
@@ -77,7 +77,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Query[RI](middleTableName,
 					leftTableName, leftRelationColumnName,
 					rightTableName, rightRelationColumnName),
-			})
+			}, options.leftQueryMiddlewares...)
 		}
 	}
 
@@ -92,7 +92,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					rightTableName, simple.Right.DomainCNName(), rightRelationFieldName, rightRelationColumnName,
 					leftTableName, leftRelationColumnName),
-			})
+			}, options.rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
@@ -105,7 +105,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Query[LI](middleTableName,
 					rightTableName, rightRelationColumnName,
 					leftTableName, leftRelationColumnName),
-			})
+			}, options.rightQueryMiddlewares...)
 		}
 	}
 }
@@ -142,6 +142,18 @@ type Options struct {
 
 	// 关闭右侧查询
 	disableRightQuery bool
+
+	// 左侧更新中间件
+	leftUpdateMiddlewares []binding.Middleware
+
+	// 左侧查询中间件
+	leftQueryMiddlewares []binding.Middleware
+
+	// 右侧更新中间件
+	rightUpdateMiddlewares []binding.Middleware
+
+	// 右侧查询中间件
+	rightQueryMiddlewares []binding.Middleware
 }
 
 func WithDisableLeft() Option {
@@ -179,3 +191,27 @@ func WithDisableRightQuery() Option {
 		options.disableRightQuery = true
 	}
 }
+
+func WithLeftUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftUpdateMiddlewares = middlewares
+	}
+}
+
+func WithLeftQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftQueryMiddlewares = middlewares
+	}
+}
+
+func WithRightUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightUpdateMiddlewares = middlewares
+	}
+}
+
+func WithRightQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightQueryMiddlewares = middlewares
+	}
+}

+ 50 - 5
convenient/relation/one2many/simple.go

@@ -64,7 +64,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc: UpdateLeft(leftTableName, simple.Left.DomainCNName(), leftRelationFieldName,
 					rightTableName, simple.Right.DomainCNName(), rightRelationColumnName),
-			})
+			}, options.leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
@@ -75,7 +75,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.LeftQueryQueryParams,
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc:      QueryLeft[RI](leftTableName, rightTableName, rightRelationColumnName),
-			})
+			}, options.leftQueryMiddlewares...)
 		}
 	}
 
@@ -89,7 +89,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc: UpdateRight(rightTableName, rightRelationFieldName, rightRelationColumnName,
 					leftTableName, simple.Left.DomainCNName()),
-			})
+			}, options.rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
@@ -100,7 +100,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      QueryRight[LI](rightTableName, rightRelationFieldName, leftTableName),
-			})
+			}, options.rightQueryMiddlewares...)
 		}
 
 		if !options.disableRightWithLeftQuery {
@@ -111,7 +111,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryWithLeftQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      QueryRightWithLeftInfo[RI, LI](rightTableName, rightRelationColumnName, options.rightQueryWithConditionFieldCallback, leftTableName),
-			})
+			}, options.rightWithLeftQueryMiddlewares...)
 		}
 	}
 }
@@ -154,6 +154,21 @@ type Options struct {
 
 	// 右查询条件构造回调
 	rightQueryWithConditionFieldCallback ConditionFieldCallback
+
+	// 左侧更新中间件
+	leftUpdateMiddlewares []binding.Middleware
+
+	// 左侧查询中间件
+	leftQueryMiddlewares []binding.Middleware
+
+	// 右侧更新中间件
+	rightUpdateMiddlewares []binding.Middleware
+
+	// 右侧查询中间件
+	rightQueryMiddlewares []binding.Middleware
+
+	// 右实体带左实体查询中间件
+	rightWithLeftQueryMiddlewares []binding.Middleware
 }
 
 func WithDisableLeft() Option {
@@ -203,3 +218,33 @@ func WithRightQueryWithConditionFieldCallback(callbacks ConditionFieldCallback)
 		options.rightQueryWithConditionFieldCallback = callbacks
 	}
 }
+
+func WithLeftUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftUpdateMiddlewares = middlewares
+	}
+}
+
+func WithLeftQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftQueryMiddlewares = middlewares
+	}
+}
+
+func WithRightUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightUpdateMiddlewares = middlewares
+	}
+}
+
+func WithRightQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightQueryMiddlewares = middlewares
+	}
+}
+
+func WithRightWithLeftQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightWithLeftQueryMiddlewares = middlewares
+	}
+}

+ 60 - 6
convenient/relation/one2one/simple.go

@@ -68,7 +68,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc: Update(leftTableName, leftRelationFieldName, leftRelationColumnName,
 					rightTableName, simple.Right.DomainCNName(), rightRelationColumnName),
-			})
+			}, options.leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
@@ -79,7 +79,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.LeftQueryQueryParams,
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc:      Query[RI](leftTableName, leftRelationFieldName, rightTableName),
-			})
+			}, options.leftQueryMiddlewares...)
 		}
 
 		if !options.disableLeftWithRightQuery {
@@ -90,7 +90,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.LeftQueryWithRightQueryParams,
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc:      QueryWithOtherInfo[LI, RI](leftTableName, leftRelationColumnName, options.leftQueryWithConditionFieldCallback, rightTableName),
-			})
+			}, options.leftWithRightQueryMiddlewares...)
 		}
 	}
 
@@ -104,7 +104,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc: Update(rightTableName, rightRelationFieldName, rightRelationColumnName,
 					leftTableName, simple.Left.DomainCNName(), leftRelationColumnName),
-			})
+			}, options.rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
@@ -115,7 +115,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      Query[LI](rightTableName, rightRelationFieldName, leftTableName),
-			})
+			}, options.rightQueryMiddlewares...)
 		}
 
 		if !options.disableRightWithLeftQuery {
@@ -126,7 +126,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryWithLeftQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      QueryWithOtherInfo[RI, LI](rightTableName, rightRelationColumnName, options.rightQueryWithConditionFieldCallback, leftTableName),
-			})
+			}, options.rightWithLeftQueryMiddlewares...)
 		}
 	}
 }
@@ -175,6 +175,24 @@ type Options struct {
 
 	// 右查询条件构造回调
 	rightQueryWithConditionFieldCallback ConditionFieldCallback
+
+	// 左侧更新中间件
+	leftUpdateMiddlewares []binding.Middleware
+
+	// 左侧查询中间件
+	leftQueryMiddlewares []binding.Middleware
+
+	// 左实体带右实体查询中间件
+	leftWithRightQueryMiddlewares []binding.Middleware
+
+	// 右侧更新中间件
+	rightUpdateMiddlewares []binding.Middleware
+
+	// 右侧查询中间件
+	rightQueryMiddlewares []binding.Middleware
+
+	// 右实体带左实体查询中间件
+	rightWithLeftQueryMiddlewares []binding.Middleware
 }
 
 func WithDisableLeft() Option {
@@ -236,3 +254,39 @@ func WithRightQueryWithConditionFieldCallback(callbacks ConditionFieldCallback)
 		options.rightQueryWithConditionFieldCallback = callbacks
 	}
 }
+
+func WithLeftUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftUpdateMiddlewares = middlewares
+	}
+}
+
+func WithLeftQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftQueryMiddlewares = middlewares
+	}
+}
+
+func WithLeftWithRightQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftWithRightQueryMiddlewares = middlewares
+	}
+}
+
+func WithRightUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightUpdateMiddlewares = middlewares
+	}
+}
+
+func WithRightQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightQueryMiddlewares = middlewares
+	}
+}
+
+func WithRightWithLeftQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightWithLeftQueryMiddlewares = middlewares
+	}
+}

+ 42 - 6
convenient/relation/remote/simple.go

@@ -74,7 +74,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					leftRemote, leftTableName, simple.Left.DomainCNName(), leftRelationFieldName, leftRelationColumnName,
 					rightRemote, rightTableName, rightRelationColumnName),
-			})
+			}, options.leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
@@ -86,7 +86,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					RequestParams:    simple.LeftQueryQueryParams,
 					Objects:          []domain.Object{simple.Left},
 					ServiceFunc:      QueryToRemote(middleTableName, leftRemote, leftTableName, leftRelationColumnName, rightRelationColumnName),
-				})
+				}, options.leftQueryMiddlewares...)
 			} else {
 				binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[RI]]{
 					Path:             leftDomainPath + rightDomainPath + "/query",
@@ -96,7 +96,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					ServiceFunc: QueryToExist[RI](middleTableName,
 						leftRemote, leftTableName, leftRelationColumnName,
 						rightTableName, rightRelationColumnName),
-				})
+				}, options.leftQueryMiddlewares...)
 			}
 		}
 	}
@@ -112,7 +112,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					rightRemote, rightTableName, simple.Right.DomainCNName(), rightRelationFieldName, rightRelationColumnName,
 					leftRemote, leftTableName, leftRelationColumnName),
-			})
+			}, options.rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
@@ -124,7 +124,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					RequestParams:    simple.RightQueryQueryParams,
 					Objects:          []domain.Object{simple.Right},
 					ServiceFunc:      QueryToRemote(middleTableName, rightRemote, rightTableName, rightRelationColumnName, leftRelationColumnName),
-				})
+				}, options.rightQueryMiddlewares...)
 			} else {
 				binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[LI]]{
 					Path:             rightDomainPath + leftDomainPath + "/query",
@@ -134,7 +134,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					ServiceFunc: QueryToExist[LI](middleTableName,
 						rightRemote, rightTableName, rightRelationColumnName,
 						leftTableName, leftRelationColumnName),
-				})
+				}, options.rightQueryMiddlewares...)
 			}
 		}
 	}
@@ -172,6 +172,18 @@ type Options struct {
 
 	// 关闭右侧查询
 	disableRightQuery bool
+
+	// 左侧更新中间件
+	leftUpdateMiddlewares []binding.Middleware
+
+	// 左侧查询中间件
+	leftQueryMiddlewares []binding.Middleware
+
+	// 右侧更新中间件
+	rightUpdateMiddlewares []binding.Middleware
+
+	// 右侧查询中间件
+	rightQueryMiddlewares []binding.Middleware
 }
 
 func WithDisableLeft() Option {
@@ -209,3 +221,27 @@ func WithDisableRightQuery() Option {
 		options.disableRightQuery = true
 	}
 }
+
+func WithLeftUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftUpdateMiddlewares = middlewares
+	}
+}
+
+func WithLeftQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.leftQueryMiddlewares = middlewares
+	}
+}
+
+func WithRightUpdateMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightUpdateMiddlewares = middlewares
+	}
+}
+
+func WithRightQueryMiddlewares(middlewares ...binding.Middleware) Option {
+	return func(options *Options) {
+		options.rightQueryMiddlewares = middlewares
+	}
+}

+ 3 - 3
convenient/value_object_crud/simple.go

@@ -185,7 +185,7 @@ func WithCreateCallbacks(callbacks *CreateCallbacks) CreateOption {
 	}
 }
 
-func WithCreateMiddlewares(middlewares []binding.Middleware) CreateOption {
+func WithCreateMiddlewares(middlewares ...binding.Middleware) CreateOption {
 	return func(options *CreateOptions) {
 		options.middlewares = middlewares
 	}
@@ -209,7 +209,7 @@ func WithDeleteCallbacks(callbacks *DeleteCallbacks) DeleteOption {
 	}
 }
 
-func WithDeleteMiddlewares(middlewares []binding.Middleware) DeleteOption {
+func WithDeleteMiddlewares(middlewares ...binding.Middleware) DeleteOption {
 	return func(options *DeleteOptions) {
 		options.middlewares = middlewares
 	}
@@ -233,7 +233,7 @@ func WithQueryCallbacks[I any](callbacks *QueryCallbacks[I]) QueryOption[I] {
 	}
 }
 
-func WithQueryMiddlewares[I any](middlewares []binding.Middleware) QueryOption[I] {
+func WithQueryMiddlewares[I any](middlewares ...binding.Middleware) QueryOption[I] {
 	return func(options *QueryOptions[I]) {
 		options.middlewares = middlewares
 	}