Skip to content
Snippets Groups Projects
Commit c771f3ff authored by Semyon Krestyaninov's avatar Semyon Krestyaninov Committed by Alena Petraki
Browse files

add log service middleware for items

parent 8c2061c1
Branches
Tags
No related merge requests found
...@@ -12,6 +12,9 @@ const ( ...@@ -12,6 +12,9 @@ const (
EventPublishItem = "publish_item" EventPublishItem = "publish_item"
EventUnpublishItem = "unpublish_item" EventUnpublishItem = "unpublish_item"
EventDeleteItem = "delete_item" EventDeleteItem = "delete_item"
EventUndeleteItem = "undelete_item"
EventArchiveItem = "archive_item"
EventUnarchiveItem = "unarchive_item"
DefaultEventSubject = "content.{{.EventType}}.{{.SpaceID}}.{{.EnvID}}.{{.CollectionID}}.{{.ItemID}}" DefaultEventSubject = "content.{{.EventType}}.{{.SpaceID}}.{{.EnvID}}.{{.CollectionID}}.{{.ItemID}}"
) )
......
package middleware
import (
"context"
"fmt"
"git.perx.ru/perxis/perxis-go/pkg/items"
logzap "git.perx.ru/perxis/perxis-go/pkg/log/zap"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type logServiceMiddleware struct {
items.Items
logger *zap.Logger
}
func LogServiceMiddleware(logger *zap.Logger) Middleware {
return func(next items.Items) items.Items {
return &logServiceMiddleware{
Items: next,
logger: logger.With(logzap.Component("Items")),
}
}
}
func (m *logServiceMiddleware) Archive(ctx context.Context, item *items.Item, options ...*items.ArchiveOptions) (err error) {
err = m.Items.Archive(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventArchiveItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to archive. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully archived", append(fields, logzap.Object(item))...)
}
return err
}
func (m *logServiceMiddleware) Create(ctx context.Context, item *items.Item, opts ...*items.CreateOptions) (created *items.Item, err error) {
created, err = m.Items.Create(ctx, item, opts...)
fields := []zapcore.Field{
logzap.Event(items.EventCreateItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to create. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully created", append(fields, logzap.Object(created))...)
}
return created, err
}
func (m *logServiceMiddleware) Delete(ctx context.Context, item *items.Item, options ...*items.DeleteOptions) (err error) {
err = m.Items.Delete(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventDeleteItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to delete. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully deleted", append(fields, logzap.Object(item))...)
}
return err
}
func (m *logServiceMiddleware) Publish(ctx context.Context, item *items.Item, options ...*items.PublishOptions) (err error) {
err = m.Items.Publish(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventPublishItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to publish. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully published", append(fields, logzap.Object(item))...)
}
return err
}
func (m *logServiceMiddleware) Unarchive(ctx context.Context, item *items.Item, options ...*items.UnarchiveOptions) (err error) {
err = m.Items.Unarchive(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventUnarchiveItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to unarchive. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully unarchived", append(fields, logzap.Object(item))...)
}
return err
}
func (m *logServiceMiddleware) Undelete(ctx context.Context, item *items.Item, options ...*items.UndeleteOptions) (err error) {
err = m.Items.Undelete(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventUndeleteItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to undelete. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully undeleted", append(fields, logzap.Object(item))...)
}
return err
}
func (m *logServiceMiddleware) Unpublish(ctx context.Context, item *items.Item, options ...*items.UnpublishOptions) (err error) {
err = m.Items.Unpublish(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventUnpublishItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to unpublish. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully unpublished", append(fields, logzap.Object(item))...)
}
return err
}
func (m *logServiceMiddleware) Update(ctx context.Context, item *items.Item, options ...*items.UpdateOptions) (err error) {
err = m.Items.Update(ctx, item, options...)
fields := []zapcore.Field{
logzap.Event(items.EventUpdateItem),
logzap.CallerFromContext(ctx),
}
if err != nil {
m.logger.Error(fmt.Sprintf("Failed to update. Error: %s", err), append(fields, logzap.Object(item))...)
} else {
m.logger.Info("Successfully updated", append(fields, logzap.Object(item))...)
}
return err
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment