diff --git a/pkg/references/middleware/client_encode_middleware.go b/pkg/references/middleware/client_encode_middleware.go index b37e3ff95fc901061440f3bd34159739004d1c56..33ca79610896926be3679920a6cd96c8afd6c73b 100644 --- a/pkg/references/middleware/client_encode_middleware.go +++ b/pkg/references/middleware/client_encode_middleware.go @@ -40,3 +40,7 @@ func (m *encodeDecodeMiddleware) Get(ctx context.Context, spaceId, envId string, } return } + +func (m *encodeDecodeMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { + return m.next.Publish(ctx, spaceId, envId, references, recursive, force) +} diff --git a/pkg/references/middleware/error_logging_middleware.go b/pkg/references/middleware/error_logging_middleware.go index b5bae4d8eb4e5904be12a90b54e03f83a0002916..0cfbf919e5acd70dc453494d15e9e8778afcca85 100644 --- a/pkg/references/middleware/error_logging_middleware.go +++ b/pkg/references/middleware/error_logging_middleware.go @@ -1,10 +1,10 @@ package middleware -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/error_log -// gowrap: http://github.com/hexdigest/gowrap +// DO NOT EDIT! +// This code is generated with http://github.com/hexdigest/gowrap tool +// using ../../../assets/templates/middleware/error_log template -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go import ( "context" @@ -39,3 +39,13 @@ func (m *errorLoggingMiddleware) Get(ctx context.Context, spaceId string, envId }() return m.next.Get(ctx, spaceId, envId, references) } + +func (m *errorLoggingMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { + logger := m.logger + defer func() { + if err != nil { + logger.Warn("response error", zap.Error(err)) + } + }() + return m.next.Publish(ctx, spaceId, envId, references, recursive, force) +} diff --git a/pkg/references/middleware/logging_middleware.go b/pkg/references/middleware/logging_middleware.go index 7c64ad139203ddf5f5923199865b98e66d2f71a7..a0f010ae99c2f9ce1eb726e5caba316379328a42 100644 --- a/pkg/references/middleware/logging_middleware.go +++ b/pkg/references/middleware/logging_middleware.go @@ -1,10 +1,10 @@ package middleware -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap +// DO NOT EDIT! +// This code is generated with http://github.com/hexdigest/gowrap tool +// using ../../../assets/templates/middleware/access_log template -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/access_log -o logging_middleware.go import ( "context" @@ -73,3 +73,46 @@ func (m *loggingMiddleware) Get(ctx context.Context, spaceId string, envId strin return items, notfound, err } + +func (m *loggingMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { + begin := time.Now() + var fields []zapcore.Field + for k, v := range map[string]interface{}{ + "ctx": ctx, + "spaceId": spaceId, + "envId": envId, + "references": references, + "recursive": recursive, + "force": force} { + if k == "ctx" { + fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) + continue + } + fields = append(fields, zap.Reflect(k, v)) + } + + m.logger.Debug("Publish.Request", fields...) + + published, notfound, unpublished, err = m.next.Publish(ctx, spaceId, envId, references, recursive, force) + + fields = []zapcore.Field{ + zap.Duration("time", time.Since(begin)), + } + + for k, v := range map[string]interface{}{ + "published": published, + "notfound": notfound, + "unpublished": unpublished, + "err": err} { + if k == "err" { + err, _ := v.(error) + fields = append(fields, zap.Error(err)) + continue + } + fields = append(fields, zap.Reflect(k, v)) + } + + m.logger.Debug("Publish.Response", fields...) + + return published, notfound, unpublished, err +} diff --git a/pkg/references/middleware/middleware.go b/pkg/references/middleware/middleware.go index 3037ea954cd583a69e2e3604cffe1d4602a6536a..6bd830146952e16ccabf780230d03dc6b9473a74 100644 --- a/pkg/references/middleware/middleware.go +++ b/pkg/references/middleware/middleware.go @@ -1,10 +1,10 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware -// gowrap: http://github.com/hexdigest/gowrap - package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +// DO NOT EDIT! +// This code is generated with http://github.com/hexdigest/gowrap tool +// using ../../../assets/templates/middleware/middleware template + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/middleware -o middleware.go import ( "git.perx.ru/perxis/perxis-go/pkg/references" diff --git a/pkg/references/middleware/recovering_middleware.go b/pkg/references/middleware/recovering_middleware.go index 8028c14e805ef57531efd1c1d06af14167548738..070d9d22fca08a8394362b8eea6a31628d56902c 100644 --- a/pkg/references/middleware/recovering_middleware.go +++ b/pkg/references/middleware/recovering_middleware.go @@ -1,10 +1,10 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/recovery -// gowrap: http://github.com/hexdigest/gowrap - package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" +// DO NOT EDIT! +// This code is generated with http://github.com/hexdigest/gowrap tool +// using ../../../assets/templates/middleware/recovery template + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go import ( "context" @@ -42,3 +42,15 @@ func (m *recoveringMiddleware) Get(ctx context.Context, spaceId string, envId st return m.next.Get(ctx, spaceId, envId, references) } + +func (m *recoveringMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { + logger := m.logger + defer func() { + if r := recover(); r != nil { + logger.Error("panic", zap.Error(fmt.Errorf("%v", r))) + err = fmt.Errorf("%v", r) + } + }() + + return m.next.Publish(ctx, spaceId, envId, references, recursive, force) +} diff --git a/pkg/references/service.go b/pkg/references/service.go index 14e2e8eb6f6eb0558033046840a5e9c2cda7f387..136001a263b8754fba68de60259c2102608a0a77 100644 --- a/pkg/references/service.go +++ b/pkg/references/service.go @@ -11,4 +11,6 @@ import ( // @grpc-addr content.references.References type References interface { Get(ctx context.Context, spaceId, envId string, references []*Reference) (items []*items.Item, notfound []*Reference, err error) + + Publish(ctx context.Context, spaceId, envId string, references []*Reference, recursive, force bool) (published []*Reference, notfound []*Reference, unpublished []*Reference, err error) }