|
|
@@ -75,63 +75,110 @@ func (params *EntityCRUDParams) crud(builder *gateway.Builder) {
|
|
|
if !createOptions.disable {
|
|
|
createMiddlewares := append(globalOptions.middlewares, createOptions.middlewares...)
|
|
|
|
|
|
- builder.
|
|
|
- Url(http.MethodPost, domainPath+"/create").
|
|
|
- Post(gateway.NewPostRequest(params.ServiceVersionedUrl+domainPath+"/create",
|
|
|
- gateway.PostRequestWithBodyForm(
|
|
|
- gateway.FormJsonBodyWithTenantIDAndUserIDFunc("tenantId", "createUserId"))),
|
|
|
- createOptions.requestResponseCallback).
|
|
|
- Build(createMiddlewares...)
|
|
|
+ copyBuilder := builder.Url(http.MethodPost, domainPath+"/create")
|
|
|
+
|
|
|
+ if createOptions.beforeBuilderCallback != nil {
|
|
|
+ copyBuilder = createOptions.beforeBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder = copyBuilder.Post(gateway.NewPostRequest(params.ServiceVersionedUrl+domainPath+"/create",
|
|
|
+ gateway.PostRequestWithBodyForm(
|
|
|
+ gateway.FormJsonBodyWithTenantIDAndUserIDFunc("tenantId", "createUserId"))),
|
|
|
+ createOptions.requestResponseCallback)
|
|
|
+
|
|
|
+ if createOptions.afterBuilderCallback != nil {
|
|
|
+ copyBuilder = createOptions.afterBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(createMiddlewares...)
|
|
|
}
|
|
|
|
|
|
// 删除
|
|
|
if !deleteOptions.disable {
|
|
|
deleteMiddlewares := append(globalOptions.middlewares, deleteOptions.middlewares...)
|
|
|
|
|
|
- builder.
|
|
|
- Url(http.MethodDelete, domainPath+"/delete").
|
|
|
- Delete(gateway.NewDeleteRequest(params.ServiceVersionedUrl+domainPath+"/delete"),
|
|
|
- deleteOptions.requestResponseCallback).
|
|
|
- Build(deleteMiddlewares...)
|
|
|
+ copyBuilder := builder.Url(http.MethodDelete, domainPath+"/delete")
|
|
|
+
|
|
|
+ if deleteOptions.beforeBuilderCallback != nil {
|
|
|
+ copyBuilder = deleteOptions.beforeBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder = copyBuilder.Delete(gateway.NewDeleteRequest(params.ServiceVersionedUrl+domainPath+"/delete"),
|
|
|
+ deleteOptions.requestResponseCallback)
|
|
|
+
|
|
|
+ if deleteOptions.afterBuilderCallback != nil {
|
|
|
+ copyBuilder = deleteOptions.afterBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(deleteMiddlewares...)
|
|
|
}
|
|
|
|
|
|
// 修改
|
|
|
if !updateOptions.disable {
|
|
|
updateMiddlewares := append(globalOptions.middlewares, updateOptions.middlewares...)
|
|
|
|
|
|
- builder.
|
|
|
- Url(http.MethodPut, domainPath+"/update").
|
|
|
- Put(gateway.NewPutRequest(params.ServiceVersionedUrl+domainPath+"/update",
|
|
|
- gateway.PutRequestWithBodyForm(
|
|
|
- gateway.FormJsonBodyWithTenantIDAndUserIDFunc("", "updateUserId"))),
|
|
|
- updateOptions.requestResponseCallback).
|
|
|
- Build(updateMiddlewares...)
|
|
|
+ copyBuilder := builder.Url(http.MethodPut, domainPath+"/update")
|
|
|
+
|
|
|
+ if updateOptions.beforeBuilderCallback != nil {
|
|
|
+ copyBuilder = updateOptions.beforeBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder = copyBuilder.Put(gateway.NewPutRequest(params.ServiceVersionedUrl+domainPath+"/update",
|
|
|
+ gateway.PutRequestWithBodyForm(
|
|
|
+ gateway.FormJsonBodyWithTenantIDAndUserIDFunc("", "updateUserId"))),
|
|
|
+ updateOptions.requestResponseCallback)
|
|
|
+
|
|
|
+ if updateOptions.afterBuilderCallback != nil {
|
|
|
+ copyBuilder = updateOptions.afterBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(updateMiddlewares...)
|
|
|
}
|
|
|
|
|
|
// 查询
|
|
|
if !queryOptions.disable {
|
|
|
queryMiddlewares := append(globalOptions.middlewares, queryOptions.middlewares...)
|
|
|
|
|
|
- builder.
|
|
|
- Url(http.MethodGet, domainPath+"/query").
|
|
|
- Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/query",
|
|
|
- gateway.GetRequestWithQueryParamsForm(gateway.FormQueryParamsWithTenantIDAndUserIDFunc("tenantId", ""))),
|
|
|
- queryOptions.requestResponseCallback).
|
|
|
- Build(queryMiddlewares...)
|
|
|
+ copyBuilder := builder.Url(http.MethodGet, domainPath+"/query")
|
|
|
+
|
|
|
+ if queryOptions.beforeBuilderCallback != nil {
|
|
|
+ copyBuilder = queryOptions.beforeBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder = copyBuilder.Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/query",
|
|
|
+ gateway.GetRequestWithQueryParamsForm(gateway.FormQueryParamsWithTenantIDAndUserIDFunc("tenantId", ""))),
|
|
|
+ queryOptions.requestResponseCallback)
|
|
|
+
|
|
|
+ if queryOptions.afterBuilderCallback != nil {
|
|
|
+ copyBuilder = queryOptions.afterBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(queryMiddlewares...)
|
|
|
}
|
|
|
|
|
|
// 通过ID获取
|
|
|
if !getByIDOptions.disable {
|
|
|
getByIDMiddlewares := append(globalOptions.middlewares, getByIDOptions.middlewares...)
|
|
|
|
|
|
- builder.
|
|
|
- Url(http.MethodGet, domainPath+"/get").
|
|
|
- Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/get"),
|
|
|
- getByIDOptions.requestResponseCallback).
|
|
|
- Build(getByIDMiddlewares...)
|
|
|
+ copyBuilder := builder.Url(http.MethodGet, domainPath+"/get")
|
|
|
+
|
|
|
+ if getByIDOptions.beforeBuilderCallback != nil {
|
|
|
+ copyBuilder = getByIDOptions.beforeBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder = copyBuilder.Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/get"),
|
|
|
+ getByIDOptions.requestResponseCallback)
|
|
|
+
|
|
|
+ if getByIDOptions.afterBuilderCallback != nil {
|
|
|
+ copyBuilder = getByIDOptions.afterBuilderCallback(copyBuilder)
|
|
|
+ }
|
|
|
+
|
|
|
+ copyBuilder.Build(getByIDMiddlewares...)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+type EntityCRUDBuilderCallback func(builder *gateway.Builder) *gateway.Builder
|
|
|
+
|
|
|
type EntityCRUDGlobalOption func(options *EntityCRUDGlobalOptions)
|
|
|
type EntityCRUDCreateOption func(options *EntityCRUDCreateOptions)
|
|
|
type EntityCRUDDeleteOption func(options *EntityCRUDDeleteOptions)
|
|
|
@@ -147,9 +194,15 @@ type EntityCRUDCreateOptions struct {
|
|
|
// 关闭创建
|
|
|
disable bool
|
|
|
|
|
|
+ // 创建请求前回调
|
|
|
+ beforeBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 创建请求响应回调
|
|
|
requestResponseCallback gateway.RequestResponseCallback
|
|
|
|
|
|
+ // 创建请求后回调
|
|
|
+ afterBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 创建中间件
|
|
|
middlewares []api.Handler
|
|
|
}
|
|
|
@@ -158,9 +211,15 @@ type EntityCRUDDeleteOptions struct {
|
|
|
// 关闭删除
|
|
|
disable bool
|
|
|
|
|
|
+ // 删除请求前回调
|
|
|
+ beforeBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 删除请求响应回调
|
|
|
requestResponseCallback gateway.RequestResponseCallback
|
|
|
|
|
|
+ // 删除请求后回调
|
|
|
+ afterBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 删除中间件
|
|
|
middlewares []api.Handler
|
|
|
}
|
|
|
@@ -169,9 +228,15 @@ type EntityCRUDUpdateOptions struct {
|
|
|
// 关闭更新
|
|
|
disable bool
|
|
|
|
|
|
+ // 更新请求前回调
|
|
|
+ beforeBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 更新请求响应回调
|
|
|
requestResponseCallback gateway.RequestResponseCallback
|
|
|
|
|
|
+ // 更新请求后回调
|
|
|
+ afterBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 更新中间件
|
|
|
middlewares []api.Handler
|
|
|
}
|
|
|
@@ -180,9 +245,15 @@ type EntityCRUDQueryOptions struct {
|
|
|
// 关闭查询
|
|
|
disable bool
|
|
|
|
|
|
+ // 查询请求前回调
|
|
|
+ beforeBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 查询请求响应回调
|
|
|
requestResponseCallback gateway.RequestResponseCallback
|
|
|
|
|
|
+ // 查询请求后回调
|
|
|
+ afterBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 查询中间件
|
|
|
middlewares []api.Handler
|
|
|
}
|
|
|
@@ -191,9 +262,15 @@ type EntityCRUDGetByIDOptions struct {
|
|
|
// 关闭根据ID查询
|
|
|
disable bool
|
|
|
|
|
|
+ // 根据ID请求前回调
|
|
|
+ beforeBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 根据ID请求响应回调
|
|
|
requestResponseCallback gateway.RequestResponseCallback
|
|
|
|
|
|
+ // 根据ID请求后回调
|
|
|
+ afterBuilderCallback EntityCRUDBuilderCallback
|
|
|
+
|
|
|
// 根据ID查询中间件
|
|
|
middlewares []api.Handler
|
|
|
}
|
|
|
@@ -204,12 +281,24 @@ func WithEntityCRUDGlobalMiddlewares(middlewares ...api.Handler) EntityCRUDGloba
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDBeforeCreateBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDCreateOption {
|
|
|
+ return func(options *EntityCRUDCreateOptions) {
|
|
|
+ options.beforeBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDCreateOption {
|
|
|
return func(options *EntityCRUDCreateOptions) {
|
|
|
options.requestResponseCallback = callbacks
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDAfterCreateBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDCreateOption {
|
|
|
+ return func(options *EntityCRUDCreateOptions) {
|
|
|
+ options.afterBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDCreateMiddlewares(middlewares []api.Handler) EntityCRUDCreateOption {
|
|
|
return func(options *EntityCRUDCreateOptions) {
|
|
|
options.middlewares = middlewares
|
|
|
@@ -222,12 +311,24 @@ func WithEntityCRUDDisableDelete() EntityCRUDDeleteOption {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDBeforeDeleteBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDDeleteOption {
|
|
|
+ return func(options *EntityCRUDDeleteOptions) {
|
|
|
+ options.beforeBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDDeleteCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDDeleteOption {
|
|
|
return func(options *EntityCRUDDeleteOptions) {
|
|
|
options.requestResponseCallback = callbacks
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDAfterDeleteBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDDeleteOption {
|
|
|
+ return func(options *EntityCRUDDeleteOptions) {
|
|
|
+ options.afterBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDDeleteMiddlewares(middlewares []api.Handler) EntityCRUDDeleteOption {
|
|
|
return func(options *EntityCRUDDeleteOptions) {
|
|
|
options.middlewares = middlewares
|
|
|
@@ -240,12 +341,24 @@ func WithEntityCRUDDisableUpdate() EntityCRUDUpdateOption {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDBeforeUpdateBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDUpdateOption {
|
|
|
+ return func(options *EntityCRUDUpdateOptions) {
|
|
|
+ options.beforeBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDUpdateCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDUpdateOption {
|
|
|
return func(options *EntityCRUDUpdateOptions) {
|
|
|
options.requestResponseCallback = callbacks
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDAfterUpdateBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDUpdateOption {
|
|
|
+ return func(options *EntityCRUDUpdateOptions) {
|
|
|
+ options.afterBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDUpdateMiddlewares(middlewares []api.Handler) EntityCRUDUpdateOption {
|
|
|
return func(options *EntityCRUDUpdateOptions) {
|
|
|
options.middlewares = middlewares
|
|
|
@@ -258,12 +371,24 @@ func WithEntityCRUDDisableQuery() EntityCRUDQueryOption {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDBeforeQueryBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDQueryOption {
|
|
|
+ return func(options *EntityCRUDQueryOptions) {
|
|
|
+ options.beforeBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDQueryCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDQueryOption {
|
|
|
return func(options *EntityCRUDQueryOptions) {
|
|
|
options.requestResponseCallback = callbacks
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDAfterQueryBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDQueryOption {
|
|
|
+ return func(options *EntityCRUDQueryOptions) {
|
|
|
+ options.afterBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDQueryMiddlewares(middlewares []api.Handler) EntityCRUDQueryOption {
|
|
|
return func(options *EntityCRUDQueryOptions) {
|
|
|
options.middlewares = middlewares
|
|
|
@@ -276,12 +401,24 @@ func WithEntityCRUDDisableGetByID() EntityCRUDGetByIDOption {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDBeforeGetByIDBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDGetByIDOption {
|
|
|
+ return func(options *EntityCRUDGetByIDOptions) {
|
|
|
+ options.beforeBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDGetByIDCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDGetByIDOption {
|
|
|
return func(options *EntityCRUDGetByIDOptions) {
|
|
|
options.requestResponseCallback = callbacks
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDAfterGetByIDBuilderCallback(callbacks EntityCRUDBuilderCallback) EntityCRUDGetByIDOption {
|
|
|
+ return func(options *EntityCRUDGetByIDOptions) {
|
|
|
+ options.afterBuilderCallback = callbacks
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDGetByIDMiddlewares(middlewares []api.Handler) EntityCRUDGetByIDOption {
|
|
|
return func(options *EntityCRUDGetByIDOptions) {
|
|
|
options.middlewares = middlewares
|