message_repository.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package repositories
  2. import (
  3. "context"
  4. "gorm.io/gorm"
  5. "sikey.com/websocket/models"
  6. )
  7. type MessageRepository interface {
  8. Create(ctx context.Context, m *models.Message) error
  9. // 查询未读消息
  10. FindUnread(ctx context.Context, uid string) ([]models.Message, error)
  11. }
  12. var _ MessageRepository = (*messageRepository)(nil)
  13. type messageRepository struct {
  14. source *gorm.DB
  15. }
  16. // FindUnread implements MessageRepository.
  17. func (repo *messageRepository) FindUnread(ctx context.Context, uid string) ([]models.Message, error) {
  18. var err error
  19. var mods []models.Message
  20. err = repo.source.WithContext(ctx).
  21. Where(&models.Message{
  22. IsRead: -1,
  23. Receiver: uid,
  24. }).
  25. // Debug().
  26. Find(&mods).
  27. Error
  28. return resultSlice(mods, err)
  29. }
  30. // Create implements MessageRepository.
  31. func (repo *messageRepository) Create(ctx context.Context, m *models.Message) error {
  32. return repo.source.WithContext(ctx).Model(&models.Message{}).Create(m).Error
  33. }
  34. func NewMessageRepository(source *gorm.DB) MessageRepository {
  35. return &messageRepository{source: source}
  36. }