|
|
@@ -9,6 +9,7 @@ import (
|
|
|
)
|
|
|
|
|
|
func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any) {
|
|
|
+ globalOptions := new(EntityCRUDGlobalOptions)
|
|
|
createOptions := new(EntityCRUDCreateOptions)
|
|
|
deleteOptions := new(EntityCRUDDeleteOptions)
|
|
|
updateOptions := new(EntityCRUDUpdateOptions)
|
|
|
@@ -17,6 +18,8 @@ func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any)
|
|
|
|
|
|
for _, opt := range opts {
|
|
|
switch o := opt.(type) {
|
|
|
+ case EntityCRUDGlobalOption:
|
|
|
+ o(globalOptions)
|
|
|
case EntityCRUDCreateOption:
|
|
|
o(createOptions)
|
|
|
case EntityCRUDDeleteOption:
|
|
|
@@ -32,6 +35,7 @@ func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ params.globalOptions = globalOptions
|
|
|
params.createOptions = createOptions
|
|
|
params.deleteOptions = deleteOptions
|
|
|
params.updateOptions = updateOptions
|
|
|
@@ -49,6 +53,7 @@ type EntityCRUDParams struct {
|
|
|
DomainCamelName string
|
|
|
|
|
|
// 可选配置项,通过WithXXX配置
|
|
|
+ globalOptions *EntityCRUDGlobalOptions
|
|
|
createOptions *EntityCRUDCreateOptions
|
|
|
deleteOptions *EntityCRUDDeleteOptions
|
|
|
updateOptions *EntityCRUDUpdateOptions
|
|
|
@@ -57,6 +62,7 @@ type EntityCRUDParams struct {
|
|
|
}
|
|
|
|
|
|
func (params *EntityCRUDParams) crud(builder *gateway.Builder) {
|
|
|
+ globalOptions := params.globalOptions
|
|
|
createOptions := params.createOptions
|
|
|
deleteOptions := params.deleteOptions
|
|
|
updateOptions := params.updateOptions
|
|
|
@@ -67,61 +73,76 @@ 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(createOptions.middlewares...)
|
|
|
+ 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(deleteOptions.middlewares...)
|
|
|
+ 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(updateOptions.middlewares...)
|
|
|
+ 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(queryOptions.middlewares...)
|
|
|
+ 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(getByIDOptions.middlewares...)
|
|
|
+ Build(getByIDMiddlewares...)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+type EntityCRUDGlobalOption func(options *EntityCRUDGlobalOptions)
|
|
|
type EntityCRUDCreateOption func(options *EntityCRUDCreateOptions)
|
|
|
type EntityCRUDDeleteOption func(options *EntityCRUDDeleteOptions)
|
|
|
type EntityCRUDUpdateOption func(options *EntityCRUDUpdateOptions)
|
|
|
type EntityCRUDQueryOption func(options *EntityCRUDQueryOptions)
|
|
|
type EntityCRUDGetByIDOption func(options *EntityCRUDGetByIDOptions)
|
|
|
|
|
|
+type EntityCRUDGlobalOptions struct {
|
|
|
+ middlewares []api.Handler
|
|
|
+}
|
|
|
+
|
|
|
type EntityCRUDCreateOptions struct {
|
|
|
// 关闭创建
|
|
|
disable bool
|
|
|
@@ -177,6 +198,12 @@ type EntityCRUDGetByIDOptions struct {
|
|
|
middlewares []api.Handler
|
|
|
}
|
|
|
|
|
|
+func WithEntityCRUDGlobalMiddlewares(middlewares ...api.Handler) EntityCRUDGlobalOption {
|
|
|
+ return func(options *EntityCRUDGlobalOptions) {
|
|
|
+ options.middlewares = middlewares
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithEntityCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDCreateOption {
|
|
|
return func(options *EntityCRUDCreateOptions) {
|
|
|
options.requestResponseCallback = callbacks
|