feat: first init
This commit is contained in:
30
internal/models/channel.go
Normal file
30
internal/models/channel.go
Normal file
@@ -0,0 +1,30 @@
|
||||
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++
|
||||
}
|
||||
10
internal/models/user.go
Normal file
10
internal/models/user.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package models
|
||||
|
||||
type User struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
Username string `json:"username"`
|
||||
SentMessages int64 `json:"sent_messages"`
|
||||
IsBanned bool `json:"is_banned"`
|
||||
}
|
||||
Reference in New Issue
Block a user