17 lines
797 B
TypeScript
17 lines
797 B
TypeScript
/**
|
|
* Repository Interface: IEngagementRepository
|
|
*
|
|
* Defines persistence operations for EngagementEvent entities.
|
|
*/
|
|
|
|
import type { EngagementEvent, EngagementAction, EngagementEntityType } from '../entities/EngagementEvent';
|
|
|
|
export interface IEngagementRepository {
|
|
save(event: EngagementEvent): Promise<void>;
|
|
findById(id: string): Promise<EngagementEvent | null>;
|
|
findByEntityId(entityType: EngagementEntityType, entityId: string): Promise<EngagementEvent[]>;
|
|
findByAction(action: EngagementAction): Promise<EngagementEvent[]>;
|
|
findByDateRange(startDate: Date, endDate: Date): Promise<EngagementEvent[]>;
|
|
countByAction(action: EngagementAction, entityId?: string, since?: Date): Promise<number>;
|
|
getSponsorClicksForEntity(entityId: string, since?: Date): Promise<number>;
|
|
} |