29 lines
563 B
Go
29 lines
563 B
Go
package services
|
|
|
|
import (
|
|
"chat/internal/cache"
|
|
"chat/internal/models"
|
|
repo "chat/internal/repositories"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type MessagingService struct {
|
|
cache *cache.Cache
|
|
}
|
|
|
|
// Send a chat message
|
|
func (s *MessagingService) Send(msg string, user *models.User, channel *models.Channel) error {
|
|
key := fmt.Sprintf("%s:messages:%s:%s", channel.ID, user.ID, time.Now())
|
|
|
|
if err := repo.SendChatMessage(msg, user, channel); err == nil {
|
|
// Store in cache
|
|
go func() {
|
|
s.cache.Set(key, msg, time.Minute*10)
|
|
}()
|
|
return nil
|
|
} else {
|
|
return err
|
|
}
|
|
}
|