Skip to content
Launch GitLab Knowledge Graph

Add Room database persistence for recommendation feedback queue

Summary

Persist recommendation feedback queue to Room database instead of in-memory storage

Background

During code review of !7 (merged), michael_usanchenko suggested persisting the feedback retry queue to Room database. Currently it's only stored in memory, so queued feedback is lost on app restart.

Requirements

  • Create Room entity for feedback queue items
  • Implement DAO with insert/delete/query operations
  • Migrate from in-memory list to database storage
  • Add WorkManager for background retry processing
  • Handle database migration gracefully

Proposed Schema

@Entity(tableName = "recommendation_feedback_queue")
data class FeedbackQueueItem(
    @PrimaryKey(autoGenerate = true) val id: Long = 0,
    val recommendationId: String,
    val action: String,
    val timestamp: Long,
    val retryCount: Int = 0,
    val lastError: String? = null
)

Acceptance Criteria

  • Room entity and DAO created
  • Migration from in-memory to database
  • WorkManager scheduled for retry processing
  • Old feedback items cleaned up after 7 days
  • Unit tests for database operations

Related Work

  • Implemented in !7 (merged)
  • Follow-up from code review discussion

Epic Context

mobile-section