veza/veza-backend-api/internal/repositories/delivered_status_repository.go
senke 2ee63b9b11 feat(chat): Sprint 1 -- migrations, models, repositories for chat rewrite
- Add migrations 109-112: read_receipts, delivered_status, message_reactions, messages extra columns
- Create ReadReceipt, DeliveredStatus, MessageReaction GORM models
- Update Message model with EditedAt, Status, IsPinned, Metadata fields
- Enrich ChatMessageRepository with cursor pagination, search, soft delete
- Create ReadReceiptRepository, DeliveredStatusRepository, ReactionRepository
- Create ChatPubSubService with Redis PubSub and in-memory fallback
2026-02-22 20:38:20 +01:00

30 lines
819 B
Go

package repositories
import (
"context"
"veza-backend-api/internal/models"
"github.com/google/uuid"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type DeliveredStatusRepository struct {
db *gorm.DB
}
func NewDeliveredStatusRepository(db *gorm.DB) *DeliveredStatusRepository {
return &DeliveredStatusRepository{db: db}
}
func (r *DeliveredStatusRepository) MarkDelivered(ctx context.Context, status *models.DeliveredStatus) error {
return r.db.WithContext(ctx).
Clauses(clause.OnConflict{DoNothing: true}).
Create(status).Error
}
func (r *DeliveredStatusRepository) GetByMessageID(ctx context.Context, messageID uuid.UUID) ([]models.DeliveredStatus, error) {
var statuses []models.DeliveredStatus
err := r.db.WithContext(ctx).Where("message_id = ?", messageID).Find(&statuses).Error
return statuses, err
}