31 lines
494 B
Go
31 lines
494 B
Go
package models
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type Channel struct {
|
|
ID string `json:"id"`
|
|
RoomName string `json:"room_name"`
|
|
TotalMessages int64 `json:"total_messages"`
|
|
Messages []Message
|
|
mu sync.RWMutex
|
|
}
|
|
|
|
type Message struct {
|
|
Content string
|
|
Sender *User
|
|
Timestamp time.Time
|
|
}
|
|
|
|
// Methods for channel
|
|
func (c *Channel) Send(msg Message) {
|
|
// Lock write
|
|
c.mu.Lock()
|
|
defer c.mu.Unlock()
|
|
|
|
c.Messages = append(c.Messages, msg)
|
|
c.TotalMessages++
|
|
}
|