From 9bd87706ce896fc9730ce519bd6e4b3aab5a2edb Mon Sep 17 00:00:00 2001
From: Obadah <oh@sessia.dev>
Date: Mon, 5 May 2025 16:00:47 +0300
Subject: [PATCH 1/2] Add user friend

---
 .gitignore               |  5 +++++
 fms/UserFriendCreated.go | 21 +++++++++++++++++++++
 fms/UserFriendDeleted.go | 19 +++++++++++++++++++
 topics.go                |  6 ++++++
 4 files changed, 51 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 fms/UserFriendCreated.go
 create mode 100644 fms/UserFriendDeleted.go

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d7be9e5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea
+.env
+vendor/*
+.DS_Store
+/cmd/debug/*
diff --git a/fms/UserFriendCreated.go b/fms/UserFriendCreated.go
new file mode 100644
index 0000000..5d541ec
--- /dev/null
+++ b/fms/UserFriendCreated.go
@@ -0,0 +1,21 @@
+package fms
+
+import (
+	"github.com/go-playground/validator/v10"
+	"gitlab.sessia.com/sdk/events"
+)
+
+type UserFriendCreated struct {
+	ID       string `json:"id"  validate:"required"`
+	UserID   string `json:"userId"  validate:"required"`
+	FriendID string `json:"friendId"  validate:"required"`
+}
+
+func (r *UserFriendCreated) GetEventName() string {
+	return events.EventNameUserFriendCreated
+}
+
+func (r *UserFriendCreated) Validate() error {
+	validate := validator.New()
+	return validate.Struct(r)
+}
diff --git a/fms/UserFriendDeleted.go b/fms/UserFriendDeleted.go
new file mode 100644
index 0000000..aac0c1d
--- /dev/null
+++ b/fms/UserFriendDeleted.go
@@ -0,0 +1,19 @@
+package fms
+
+import (
+	"github.com/go-playground/validator/v10"
+	"gitlab.sessia.com/sdk/events"
+)
+
+type UserFriendDeleted struct {
+	ID string `json:"id"  validate:"required"`
+}
+
+func (r *UserFriendDeleted) GetEventName() string {
+	return events.EventNameUserFriendDeleted
+}
+
+func (r *UserFriendDeleted) Validate() error {
+	validate := validator.New()
+	return validate.Struct(r)
+}
diff --git a/topics.go b/topics.go
index 7ba69b3..0da2f23 100644
--- a/topics.go
+++ b/topics.go
@@ -40,6 +40,9 @@ const (
 	EventNameDecisionEvaluated = "DecisionEvaluated"
 
 	EventNamePostViewed = "PostViewed"
+
+	EventNameUserFriendCreated = "UserFriendCreated"
+	EventNameUserFriendDeleted = "UserFriendDeleted"
 )
 
 var topicMap = map[string]string{
@@ -82,6 +85,9 @@ var topicMap = map[string]string{
 	EventNameDecisionEvaluated: "lms.decision.evaluated",
 
 	EventNamePostViewed: "cms.post.viewed",
+
+	EventNameUserFriendCreated: "fms.user_friend.created",
+	EventNameUserFriendDeleted: "fms.user_friend.deleted",
 }
 
 func GetTopicByEventName(eventName string) string {
-- 
GitLab


From 6e6eb3695febb8192428d059b29caf0ceaa8ad19 Mon Sep 17 00:00:00 2001
From: Obadah <oh@sessia.dev>
Date: Wed, 7 May 2025 09:34:41 +0300
Subject: [PATCH 2/2] add parameters to events in cms fms

---
 cms/PostCommentCreated.go       | 26 ++++++++++++++++++++++++
 cms/PostLikeCreated.go          | 24 ++++++++++++++++++++++
 cms/postCreated.go              | 36 +++++++++++++++++++++++++++++++++
 fms/UserFriendCreated.go        |  8 +++++---
 fms/UserFriendDeleted.go        |  6 +++++-
 fms/UserFriendRequestCreated.go | 24 ++++++++++++++++++++++
 topics.go                       | 21 +++++++++++++++++--
 7 files changed, 139 insertions(+), 6 deletions(-)
 create mode 100644 cms/PostCommentCreated.go
 create mode 100644 cms/PostLikeCreated.go
 create mode 100644 cms/postCreated.go
 create mode 100644 fms/UserFriendRequestCreated.go

diff --git a/cms/PostCommentCreated.go b/cms/PostCommentCreated.go
new file mode 100644
index 0000000..12f3e15
--- /dev/null
+++ b/cms/PostCommentCreated.go
@@ -0,0 +1,26 @@
+package cms
+
+import (
+	"github.com/go-playground/validator/v10"
+	"github.com/google/uuid"
+	"gitlab.sessia.com/sdk/events"
+	"time"
+)
+
+type PostCommentCreated struct {
+	ID            uuid.UUID `json:"id" validate:"required"`
+	CreatorID     uuid.UUID `json:"creatorId" validate:"required"`
+	PostCreatorID uuid.UUID `json:"postCreatorId" validate:"required"`
+	PostID        uuid.UUID `json:"postId" validate:"required"`
+	Text          string    `json:"text"`
+	CreatedAt     time.Time `json:"createdAt"`
+	UpdatedAt     time.Time `json:"updatedAt"`
+}
+
+func (r *PostCommentCreated) GetEventName() string {
+	return events.EventNamePostCommentCreated
+}
+
+func (r *PostCommentCreated) Validate() error {
+	return validator.New().Struct(r)
+}
diff --git a/cms/PostLikeCreated.go b/cms/PostLikeCreated.go
new file mode 100644
index 0000000..a9b1e30
--- /dev/null
+++ b/cms/PostLikeCreated.go
@@ -0,0 +1,24 @@
+package cms
+
+import (
+	"github.com/go-playground/validator/v10"
+	"github.com/google/uuid"
+	"gitlab.sessia.com/sdk/events"
+	"time"
+)
+
+type PostLikeCreated struct {
+	ID            uuid.UUID `json:"id" validate:"required"`
+	UserID        uuid.UUID `json:"userId" validate:"required"`
+	PostID        uuid.UUID `json:"postId" validate:"required"`
+	PostCreatorID uuid.UUID `json:"postCreatorId" validate:"required"`
+	CreatedAt     time.Time `json:"createdAt"`
+}
+
+func (r *PostLikeCreated) GetEventName() string {
+	return events.EventNamePostLikeCreated
+}
+
+func (r *PostLikeCreated) Validate() error {
+	return validator.New().Struct(r)
+}
diff --git a/cms/postCreated.go b/cms/postCreated.go
new file mode 100644
index 0000000..2b71305
--- /dev/null
+++ b/cms/postCreated.go
@@ -0,0 +1,36 @@
+package cms
+
+import (
+	"github.com/go-playground/validator/v10"
+	"github.com/google/uuid"
+	"gitlab.sessia.com/sdk/events"
+)
+
+type FilesResponse struct {
+	ID       uuid.UUID `json:"id"`
+	URL      string    `json:"url"`
+	Sort     int       `json:"sort"`
+	MimeType *string   `json:"mimeType"`
+}
+
+type PostCreated struct {
+	ID               uuid.UUID       `json:"id" validate:"required"`
+	Name             string          `json:"name"`
+	ShortDescription string          `json:"shortDescription"`
+	Description      string          `json:"description"`
+	Files            []FilesResponse `json:"files"`
+	IsActive         bool            `json:"isActive"`
+	PublishedAt      *string         `json:"publishedAt"`
+	CreatedAt        string          `json:"createdAt"`
+	UpdatedAt        string          `json:"updatedAt"`
+	CreatorID        string          `json:"creatorId"`
+	CommunityID      *string         `json:"communityId"`
+}
+
+func (r *PostCreated) GetEventName() string {
+	return events.EventNamePostCreated
+}
+
+func (r *PostCreated) Validate() error {
+	return validator.New().Struct(r)
+}
diff --git a/fms/UserFriendCreated.go b/fms/UserFriendCreated.go
index 5d541ec..aa5d41c 100644
--- a/fms/UserFriendCreated.go
+++ b/fms/UserFriendCreated.go
@@ -2,13 +2,15 @@ package fms
 
 import (
 	"github.com/go-playground/validator/v10"
+	"github.com/google/uuid"
 	"gitlab.sessia.com/sdk/events"
 )
 
 type UserFriendCreated struct {
-	ID       string `json:"id"  validate:"required"`
-	UserID   string `json:"userId"  validate:"required"`
-	FriendID string `json:"friendId"  validate:"required"`
+	ID         uuid.UUID `json:"id"  validate:"required"`
+	UserID     uuid.UUID `json:"userId"  validate:"required"`
+	FriendID   uuid.UUID `json:"friendId"  validate:"required"`
+	AcceptorID uuid.UUID `json:"acceptorId"` // the one who has accepted the friend request
 }
 
 func (r *UserFriendCreated) GetEventName() string {
diff --git a/fms/UserFriendDeleted.go b/fms/UserFriendDeleted.go
index aac0c1d..b7a6489 100644
--- a/fms/UserFriendDeleted.go
+++ b/fms/UserFriendDeleted.go
@@ -2,11 +2,15 @@ package fms
 
 import (
 	"github.com/go-playground/validator/v10"
+	"github.com/google/uuid"
 	"gitlab.sessia.com/sdk/events"
 )
 
 type UserFriendDeleted struct {
-	ID string `json:"id"  validate:"required"`
+	ID        uuid.UUID `json:"id"  validate:"required"`
+	UserID    uuid.UUID `json:"userId"  validate:"required"`
+	FriendID  uuid.UUID `json:"friendId"  validate:"required"`
+	DeleterID uuid.UUID `json:"deleterId"` // who decided to delete the friend
 }
 
 func (r *UserFriendDeleted) GetEventName() string {
diff --git a/fms/UserFriendRequestCreated.go b/fms/UserFriendRequestCreated.go
new file mode 100644
index 0000000..02f2bb5
--- /dev/null
+++ b/fms/UserFriendRequestCreated.go
@@ -0,0 +1,24 @@
+package fms
+
+import (
+	"github.com/go-playground/validator/v10"
+	"github.com/google/uuid"
+	"gitlab.sessia.com/sdk/events"
+	"time"
+)
+
+type UserFriendRequestCreated struct {
+	ID         uuid.UUID `json:"id" validate:"required"`
+	CreatedAt  time.Time `json:"createdAt"`
+	SenderID   uuid.UUID `json:"senderId" validate:"required"`
+	ReceiverID uuid.UUID `json:"receiverId" validate:"required"`
+}
+
+func (r *UserFriendRequestCreated) GetEventName() string {
+	return events.EventNameUserFriendRequestCreated
+}
+
+func (r *UserFriendRequestCreated) Validate() error {
+	validate := validator.New()
+	return validate.Struct(r)
+}
diff --git a/topics.go b/topics.go
index 0da2f23..51a8ed1 100644
--- a/topics.go
+++ b/topics.go
@@ -43,6 +43,15 @@ const (
 
 	EventNameUserFriendCreated = "UserFriendCreated"
 	EventNameUserFriendDeleted = "UserFriendDeleted"
+
+	EventNameUserFriendRequestCreated = "UserFriendRequestCreated"
+	EventNameUserFriendRequestDeleted = "UserFriendRequestDeleted"
+
+	EventNamePostCreated = "PostCreated"
+
+	EventNamePostLikeCreated = "PostLikeCreated"
+
+	EventNamePostCommentCreated = "PostCommentCreated"
 )
 
 var topicMap = map[string]string{
@@ -86,8 +95,16 @@ var topicMap = map[string]string{
 
 	EventNamePostViewed: "cms.post.viewed",
 
-	EventNameUserFriendCreated: "fms.user_friend.created",
-	EventNameUserFriendDeleted: "fms.user_friend.deleted",
+	EventNamePostLikeCreated: "cms.post_like.created",
+
+	EventNamePostCommentCreated: "cms.post_comment.created",
+
+	EventNamePostCreated: "cms.post.created",
+
+	EventNameUserFriendCreated:        "fms.user_friend.created",
+	EventNameUserFriendDeleted:        "fms.user_friend.deleted",
+	EventNameUserFriendRequestCreated: "fms.user_friend_request.created",
+	EventNameUserFriendRequestDeleted: "fms.user_friend_request.deleted",
 }
 
 func GetTopicByEventName(eventName string) string {
-- 
GitLab