49 lines
1.0 KiB
TypeScript
49 lines
1.0 KiB
TypeScript
/**
|
|
* Repository Interface: IUserRatingRepository
|
|
*
|
|
* Defines operations for UserRating value objects
|
|
*/
|
|
|
|
import type { UserRating } from '../value-objects/UserRating';
|
|
|
|
export interface IUserRatingRepository {
|
|
/**
|
|
* Find rating by user ID
|
|
*/
|
|
findByUserId(userId: string): Promise<UserRating | null>;
|
|
|
|
/**
|
|
* Find ratings by multiple user IDs
|
|
*/
|
|
findByUserIds(userIds: string[]): Promise<UserRating[]>;
|
|
|
|
/**
|
|
* Save or update a user rating
|
|
*/
|
|
save(rating: UserRating): Promise<UserRating>;
|
|
|
|
/**
|
|
* Get top rated drivers
|
|
*/
|
|
getTopDrivers(limit: number): Promise<UserRating[]>;
|
|
|
|
/**
|
|
* Get top trusted users
|
|
*/
|
|
getTopTrusted(limit: number): Promise<UserRating[]>;
|
|
|
|
/**
|
|
* Get eligible stewards (based on trust and fairness thresholds)
|
|
*/
|
|
getEligibleStewards(): Promise<UserRating[]>;
|
|
|
|
/**
|
|
* Get ratings by driver tier
|
|
*/
|
|
findByDriverTier(tier: 'rookie' | 'amateur' | 'semi-pro' | 'pro' | 'elite'): Promise<UserRating[]>;
|
|
|
|
/**
|
|
* Delete rating by user ID
|
|
*/
|
|
delete(userId: string): Promise<void>;
|
|
} |