package chatcore type SessionType string const ( SessionTypeGroup SessionType = "group" SessionTypeDM SessionType = "dm" ) type MessageType string const ( MessageTypeText MessageType = "text" MessageTypeImage MessageType = "image" MessageTypeSystem MessageType = "system" ) type Session struct { Id int64 `json:"id" bson:"_id"` Type SessionType `json:"type" bson:"type"` Name string `json:"name" bson:"name"` CreatorId int64 `json:"creatorId" bson:"creatorId"` Participants []int64 `json:"participants" bson:"participants"` LastMessage string `json:"lastMessage" bson:"lastMessage"` LastMessageAt int64 `json:"lastMessageAt" bson:"lastMessageAt"` CreatedAt int64 `json:"createdAt" bson:"createdAt"` UpdatedAt int64 `json:"updatedAt" bson:"updatedAt"` } type Message struct { Id int64 `json:"id" bson:"_id"` SessionId int64 `json:"sessionId" bson:"sessionId"` SenderId int64 `json:"senderId" bson:"senderId"` Type MessageType `json:"type" bson:"type"` Content string `json:"content" bson:"content"` CreatedAt int64 `json:"createdAt" bson:"createdAt"` } type Store interface { CreateSession(typ SessionType, name string, creatorId int64, participants []int64) (*Session, error) GetSession(id int64) (*Session, error) ListUserSessions(userId int64, page, limit int) []*Session AddParticipant(sessionId, userId int64) error RemoveParticipant(sessionId, userId int64) error DeleteSession(id int64) AddMessage(sessionId, senderId int64, msgType MessageType, content string) (*Message, error) GetMessages(sessionId int64, page, limit int) []*Message }