From c9fd28d7bc3f81a57fd82155e0f4141722a43857 Mon Sep 17 00:00:00 2001
From: Anton Sattarov <sattarov@perx.ru>
Date: Thu, 27 Jul 2023 11:27:48 +0300
Subject: [PATCH] gen middlewares

---
 .../middleware/client_encode_middleware.go    |  4 ++
 .../middleware/error_logging_middleware.go    | 18 +++++--
 .../middleware/logging_middleware.go          | 51 +++++++++++++++++--
 pkg/references/middleware/middleware.go       | 10 ++--
 .../middleware/recovering_middleware.go       | 22 ++++++--
 pkg/references/service.go                     |  2 +
 6 files changed, 89 insertions(+), 18 deletions(-)

diff --git a/pkg/references/middleware/client_encode_middleware.go b/pkg/references/middleware/client_encode_middleware.go
index b37e3ff9..33ca7961 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 b5bae4d8..0cfbf919 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 7c64ad13..a0f010ae 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 3037ea95..6bd83014 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 8028c14e..070d9d22 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 14e2e8eb..136001a2 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)
 }
-- 
GitLab