|
|
@@ -33,6 +33,7 @@ type Simple[I any] struct {
|
|
|
GetByIDQueryParams request.IDRequestParam
|
|
|
|
|
|
// 可选配置项,通过WithXXX配置
|
|
|
+ globalOptions *GlobalOptions
|
|
|
createOptions *CreateOptions
|
|
|
deleteOptions *DeleteOptions
|
|
|
updateOptions *UpdateOptions
|
|
|
@@ -40,7 +41,8 @@ type Simple[I any] struct {
|
|
|
getByIDOptions *GetByIDOptions[I]
|
|
|
}
|
|
|
|
|
|
-func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
|
|
|
+func (simple *Simple[I]) bind(binder *binding.Binder) {
|
|
|
+ globalOptions := simple.globalOptions
|
|
|
createOptions := simple.createOptions
|
|
|
deleteOptions := simple.deleteOptions
|
|
|
updateOptions := simple.updateOptions
|
|
|
@@ -52,7 +54,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Mid
|
|
|
|
|
|
// 创建
|
|
|
if !createOptions.disable {
|
|
|
- createMiddlewares := append(middlewares, createOptions.middlewares...)
|
|
|
+ createMiddlewares := append(globalOptions.middlewares, createOptions.middlewares...)
|
|
|
|
|
|
if !createOptions.needTx {
|
|
|
binding.PostBind[string](binder, &binding.SimpleBindItem[string]{
|
|
|
@@ -75,7 +77,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Mid
|
|
|
|
|
|
// 删除
|
|
|
if !deleteOptions.disable {
|
|
|
- deleteMiddlewares := append(middlewares, deleteOptions.middlewares...)
|
|
|
+ deleteMiddlewares := append(globalOptions.middlewares, deleteOptions.middlewares...)
|
|
|
|
|
|
if !deleteOptions.needTx {
|
|
|
binding.DeleteBind(binder, &binding.SimpleBindItem[any]{
|
|
|
@@ -98,7 +100,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Mid
|
|
|
|
|
|
// 修改
|
|
|
if !updateOptions.disable {
|
|
|
- updateMiddlewares := append(middlewares, updateOptions.middlewares...)
|
|
|
+ updateMiddlewares := append(globalOptions.middlewares, updateOptions.middlewares...)
|
|
|
|
|
|
if !updateOptions.needTx {
|
|
|
binding.PutBind(binder, &binding.SimpleBindItem[any]{
|
|
|
@@ -121,7 +123,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Mid
|
|
|
|
|
|
// 查询
|
|
|
if !queryOptions.disable {
|
|
|
- queryMiddlewares := append(middlewares, queryOptions.middlewares...)
|
|
|
+ queryMiddlewares := append(globalOptions.middlewares, queryOptions.middlewares...)
|
|
|
|
|
|
binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[I]]{
|
|
|
Path: domainPath + "/query",
|
|
|
@@ -134,7 +136,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Mid
|
|
|
|
|
|
// 通过ID获取
|
|
|
if !getByIDOptions.disable {
|
|
|
- getByIDMiddlewares := append(middlewares, getByIDOptions.middlewares...)
|
|
|
+ getByIDMiddlewares := append(globalOptions.middlewares, getByIDOptions.middlewares...)
|
|
|
|
|
|
binding.GetBind(binder, &binding.SimpleBindItem[I]{
|
|
|
Path: domainPath + "/get",
|
|
|
@@ -147,6 +149,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Mid
|
|
|
}
|
|
|
|
|
|
func BindSimple[I any](binder *binding.Binder, simple *Simple[I], opts ...any) {
|
|
|
+ globalOptions := new(GlobalOptions)
|
|
|
createOptions := new(CreateOptions)
|
|
|
deleteOptions := new(DeleteOptions)
|
|
|
updateOptions := new(UpdateOptions)
|
|
|
@@ -155,6 +158,8 @@ func BindSimple[I any](binder *binding.Binder, simple *Simple[I], opts ...any) {
|
|
|
|
|
|
for _, opt := range opts {
|
|
|
switch o := opt.(type) {
|
|
|
+ case GlobalOption:
|
|
|
+ o(globalOptions)
|
|
|
case CreateOption:
|
|
|
o(createOptions)
|
|
|
case DeleteOption:
|
|
|
@@ -170,6 +175,7 @@ func BindSimple[I any](binder *binding.Binder, simple *Simple[I], opts ...any) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ simple.globalOptions = globalOptions
|
|
|
simple.createOptions = createOptions
|
|
|
simple.deleteOptions = deleteOptions
|
|
|
simple.updateOptions = updateOptions
|
|
|
@@ -179,12 +185,17 @@ func BindSimple[I any](binder *binding.Binder, simple *Simple[I], opts ...any) {
|
|
|
simple.bind(binder)
|
|
|
}
|
|
|
|
|
|
+type GlobalOption func(options *GlobalOptions)
|
|
|
type CreateOption func(options *CreateOptions)
|
|
|
type DeleteOption func(options *DeleteOptions)
|
|
|
type UpdateOption func(options *UpdateOptions)
|
|
|
type QueryOption[I any] func(options *QueryOptions[I])
|
|
|
type GetByIDOption[I any] func(options *GetByIDOptions[I])
|
|
|
|
|
|
+type GlobalOptions struct {
|
|
|
+ middlewares []binding.Middleware
|
|
|
+}
|
|
|
+
|
|
|
type CreateOptions struct {
|
|
|
// 关闭创建
|
|
|
disable bool
|
|
|
@@ -252,6 +263,12 @@ type GetByIDOptions[I any] struct {
|
|
|
middlewares []binding.Middleware
|
|
|
}
|
|
|
|
|
|
+func WithGlobalMiddlewares(middlewares ...binding.Middleware) GlobalOption {
|
|
|
+ return func(options *GlobalOptions) {
|
|
|
+ options.middlewares = middlewares
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithDisableCreate() CreateOption {
|
|
|
return func(options *CreateOptions) {
|
|
|
options.disable = true
|