From a47898af0595ce79fbd4e504920d7070cb1460ee Mon Sep 17 00:00:00 2001
From: Anton Sattarov <dirty.mew@gmail.com>
Date: Fri, 20 Oct 2023 11:26:36 +0200
Subject: [PATCH] add revision_description

---
 perxis-proto      |  2 +-
 pkg/items/item.go | 92 +++++++++++++++++++++++++----------------------
 2 files changed, 51 insertions(+), 43 deletions(-)

diff --git a/perxis-proto b/perxis-proto
index de4fde11..b6932f50 160000
--- a/perxis-proto
+++ b/perxis-proto
@@ -1 +1 @@
-Subproject commit de4fde11b4f304e1a9d27e41801003c0f77cbec6
+Subproject commit b6932f502c43944f278af9097607fd17af4b8b8d
diff --git a/pkg/items/item.go b/pkg/items/item.go
index faa92bbb..7c34d2bb 100644
--- a/pkg/items/item.go
+++ b/pkg/items/item.go
@@ -69,6 +69,7 @@ var SystemFields = []string{
 	"updated_at",
 	"updated_by",
 	"revision_id",
+	"revision_description",
 	"data",
 	"translations",
 	"locale",
@@ -136,23 +137,24 @@ func (i *Item) Clone() *Item {
 
 func (i *Item) ToMap() map[string]interface{} {
 	return map[string]interface{}{
-		"id":             i.ID,
-		"space_id":       i.SpaceID,
-		"env_id":         i.EnvID,
-		"collection_id":  i.CollectionID,
-		"state":          i.State,
-		"created_rev_at": i.CreatedRevAt,
-		"created_by":     i.CreatedBy,
-		"created_at":     i.CreatedAt,
-		"updated_at":     i.UpdatedAt,
-		"updated_by":     i.UpdatedBy,
-		"revision_id":    i.RevisionID,
-		"data":           i.Data,
-		"translations":   i.Translations,
-		"locale":         i.Locale,
-		"deleted":        i.Deleted,
-		"hidden":         i.Hidden,
-		"template":       i.Template,
+		"id":                   i.ID,
+		"space_id":             i.SpaceID,
+		"env_id":               i.EnvID,
+		"collection_id":        i.CollectionID,
+		"state":                i.State,
+		"created_rev_at":       i.CreatedRevAt,
+		"created_by":           i.CreatedBy,
+		"created_at":           i.CreatedAt,
+		"updated_at":           i.UpdatedAt,
+		"updated_by":           i.UpdatedBy,
+		"revision_id":          i.RevisionID,
+		"revision_description": i.RevisionDescription,
+		"data":                 i.Data,
+		"translations":         i.Translations,
+		"locale":               i.Locale,
+		"deleted":              i.Deleted,
+		"hidden":               i.Hidden,
+		"template":             i.Template,
 	}
 }
 
@@ -305,6 +307,8 @@ func (i *Item) SetSystemField(field string, value interface{}) error {
 		i.UpdatedAt, ok = value.(time.Time)
 	case "revision_id":
 		i.RevisionID, ok = value.(string)
+	case "revision_description":
+		i.RevisionDescription, ok = value.(string)
 	case "hidden":
 		i.Hidden, ok = value.(bool)
 	case "deleted":
@@ -345,6 +349,8 @@ func (i *Item) GetSystem(field string) (any, error) {
 		return i.UpdatedAt, nil
 	case "revision_id":
 		return i.RevisionID, nil
+	case "revision_description":
+		return i.RevisionDescription, nil
 	case "hidden":
 		return i.Hidden, nil
 	case "deleted":
@@ -395,7 +401,7 @@ func (i *Item) Get(field string) (any, error) {
 // GetSystemField возвращает описание поля для системных аттрибутов Item
 func GetSystemField(fld string) (*field.Field, error) {
 	switch fld {
-	case "id", "space_id", "env_id", "collection_id", "revision_id":
+	case "id", "space_id", "env_id", "collection_id", "revision_id", "revision_description":
 		return field.String(), nil
 	case "created_rev_at", "created_at", "updated_at", "published_at":
 		return field.Time(), nil
@@ -440,18 +446,19 @@ func ItemToProto(item *Item) *pb.Item {
 	}
 
 	protoItem := &pb.Item{
-		Id:           item.ID,
-		SpaceId:      item.SpaceID,
-		EnvId:        item.EnvID,
-		CollectionId: item.CollectionID,
-		State:        pb.Item_State(item.State),
-		CreatedBy:    item.CreatedBy,
-		UpdatedBy:    item.UpdatedBy,
-		RevisionId:   item.RevisionID,
-		Locale:       item.Locale,
-		Hidden:       item.Hidden,
-		Template:     item.Template,
-		Deleted:      item.Deleted,
+		Id:                  item.ID,
+		SpaceId:             item.SpaceID,
+		EnvId:               item.EnvID,
+		CollectionId:        item.CollectionID,
+		State:               pb.Item_State(item.State),
+		CreatedBy:           item.CreatedBy,
+		UpdatedBy:           item.UpdatedBy,
+		RevisionId:          item.RevisionID,
+		RevisionDescription: item.RevisionDescription,
+		Locale:              item.Locale,
+		Hidden:              item.Hidden,
+		Template:            item.Template,
+		Deleted:             item.Deleted,
 	}
 
 	if item.Data != nil {
@@ -488,18 +495,19 @@ func ItemFromProto(protoItem *pb.Item) *Item {
 	}
 
 	item := &Item{
-		ID:           protoItem.Id,
-		SpaceID:      protoItem.SpaceId,
-		EnvID:        protoItem.EnvId,
-		CollectionID: protoItem.CollectionId,
-		State:        State(protoItem.State),
-		CreatedBy:    protoItem.CreatedBy,
-		UpdatedBy:    protoItem.UpdatedBy,
-		RevisionID:   protoItem.RevisionId,
-		Locale:       protoItem.Locale,
-		Hidden:       protoItem.Hidden,
-		Template:     protoItem.Template,
-		Deleted:      protoItem.Deleted,
+		ID:                  protoItem.Id,
+		SpaceID:             protoItem.SpaceId,
+		EnvID:               protoItem.EnvId,
+		CollectionID:        protoItem.CollectionId,
+		State:               State(protoItem.State),
+		CreatedBy:           protoItem.CreatedBy,
+		UpdatedBy:           protoItem.UpdatedBy,
+		RevisionID:          protoItem.RevisionId,
+		RevisionDescription: protoItem.RevisionDescription,
+		Locale:              protoItem.Locale,
+		Hidden:              protoItem.Hidden,
+		Template:            protoItem.Template,
+		Deleted:             protoItem.Deleted,
 	}
 
 	if protoItem.Data != nil {
-- 
GitLab