package main import ( "go-socket/Enums/ConnectionState" "time" "github.com/coder/websocket" "github.com/google/uuid" ) type User struct { Name string Pronouns string PasswordHash string CreatedAt time.Time WsConn *websocket.Conn Id uint32 Groups map[uint32]struct{} Connections map[uuid.UUID]*Connection Color [3]uint8 } type Connection struct { Id uuid.UUID `json:"id"` CreatedAt time.Time `json:"createdAt"` MessagesBuf [MaxDirectMsgCache]*Message `json:"-"` RequestorId uint32 `json:"requestorId"` RecipientId uint32 `json:"recipientId"` State ConnectionState.ConnectionState `json:"state"` } type Message struct { Id uuid.UUID `json:"id"` Content string `json:"content"` CreatedAt time.Time `json:"createdAt"` Sender uint32 `json:"sender"` IsGroupMessage bool `json:"isGroupMessage"` } type Group struct { Name string `json:"name"` CreatedAt time.Time `json:"createdAt"` Id uint32 `json:"-"` CreatorId uint32 `json:"creatorId"` OwnerId uint32 `json:"ownerId"` Users map[uint32]struct{} `json:"-"` Color [3]uint8 `json:"color"` EnableUserColors bool `json:"enableUserColors"` } type LoginReturn struct { Token string `json:"token"` UserId uint32 `json:"userId"` }