Data Layer medium complexity backend
0
Dependencies
0
Dependents
6
Entities
0
Integrations

Description

Data access layer responsible for executing the similarity queries used by the Duplicate Detection Service. Queries the activities table using indexed columns (user_id, activity_date, activity_type_id) within a configurable time window and returns candidate conflicting records. Optimized for low-latency lookups to avoid blocking the registration flow.

Feature: Duplicate Activity Detection

activity-deduplication-repository

Responsibilities

  • Query activities by user_id, activity_date, and activity_type_id within the configured time window
  • Return full activity records for conflict comparison including duration and contact_id
  • Support batch lookup for bulk registration duplicate checks
  • Expose query configuration for time window and fuzzy match tolerances

Interfaces

findPotentialDuplicates(userId, activityDate, activityTypeId, windowHours): Activity[]
findPotentialDuplicatesBatch(candidates[]): Map<string, Activity[]>
getActivityByIdForComparison(activityId): Activity
countDuplicatesInPeriod(userId, startDate, endDate): number