123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package repositories
- import (
- "context"
- "time"
- "gorm.io/gorm"
- "sikey.com/websocket/models"
- )
- type FirebaseMessageQueueRepository interface {
- Create(ctx context.Context, queue *models.FirebaseMessagingQueue) error
- FindRetrieableQueue(ctx context.Context) (queues []models.FirebaseMessagingQueue, err error)
- Save(ctx context.Context, queue *models.FirebaseMessagingQueue) error
- UpdateRetries(ctx context.Context, queue *models.FirebaseMessagingQueue) error
- Delete(ctx context.Context, id int) error
- }
- var _ FirebaseMessageQueueRepository = (*firebaseMessageQueueRepository)(nil)
- type firebaseMessageQueueRepository struct {
- source *gorm.DB
- }
- // UpdateRetries implements FirebaseMessageQueueRepository.
- func (repo *firebaseMessageQueueRepository) UpdateRetries(ctx context.Context, queue *models.FirebaseMessagingQueue) error {
- return repo.source.WithContext(ctx).Model(&models.FirebaseMessagingQueue{}).Where("id", queue.ID).Updates(map[string]interface{}{
- "remaining_retries": queue.RemainingRetries,
- "last_retry_time": queue.LastRetryTime.Format(time.DateTime),
- }).Error
- }
- // Delete implements FirebaseMessageQueueRepository.
- func (repo *firebaseMessageQueueRepository) Delete(ctx context.Context, id int) error {
- return repo.source.WithContext(ctx).
- Where("id = ?", id).
- Delete(&models.FirebaseMessagingQueue{}).
- Error
- }
- // Save implements FirebaseMessageQueueRepository.
- func (repo *firebaseMessageQueueRepository) Save(ctx context.Context, queue *models.FirebaseMessagingQueue) error {
- return repo.source.WithContext(ctx).Save(queue).Error
- }
- // FindRetrieableQueue implements FirebaseMessageQueueRepository.
- func (repo *firebaseMessageQueueRepository) FindRetrieableQueue(ctx context.Context) (queues []models.FirebaseMessagingQueue, err error) {
- err = repo.source.WithContext(ctx).
- Where("remaining_retries > 0").
- Model(&models.FirebaseMessagingQueue{}).
- Find(&queues).
- Error
- return resultSlice(queues, err)
- }
- // Create implements FirebaseMessageQueueRepository.
- func (repo *firebaseMessageQueueRepository) Create(ctx context.Context, queue *models.FirebaseMessagingQueue) error {
- return repo.source.WithContext(ctx).Create(queue).Error
- }
- func NewFirebaseMessageQueueRepository(source *gorm.DB) FirebaseMessageQueueRepository {
- return &firebaseMessageQueueRepository{source: source}
- }
|