86211923db
Repository Interface Optimization: - Created IBaseRepository.ts and IPaginatedRepository.ts - Refactored all 7 repository interfaces to extend base interfaces - Eliminated ~200 lines of redundant code (70% reduction) - Improved type safety and maintainability Dependency Injection Improvements: - Added EmailService and GameTokenService to DIContainer - Updated CreateUserCommandHandler constructor for DI - Updated RequestPasswordResetCommandHandler constructor for DI - Enhanced testability and service consistency Environment Configuration: - Created comprehensive .env.example with 40+ variables - Organized into 12 logical sections (Database, Security, Email, etc.) - Added security guidelines and best practices - Documented all backend environment requirements Documentation: - Added comprehensive codebase review - Created refactoring summary report - Added frontend implementation guide Impact: Improved code quality, reduced maintenance overhead, enhanced developer experience
10 lines
597 B
TypeScript
10 lines
597 B
TypeScript
import { DeckAggregate } from '../Deck/DeckAggregate';
|
|
import { IPaginatedRepository } from './IBaseRepository';
|
|
|
|
export interface IDeckRepository extends IPaginatedRepository<DeckAggregate, { decks: DeckAggregate[], totalCount: number }> {
|
|
// Deck-specific methods for restrictions and filtering
|
|
countActiveByUserId(userId: string): Promise<number>;
|
|
countOrganizationalByUserId(userId: string): Promise<number>;
|
|
findFilteredDecks(userId: string, userOrgId?: string | null, isAdmin?: boolean, from?: number, to?: number): Promise<{ decks: DeckAggregate[], totalCount: number }>;
|
|
}
|