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
20 lines
1.1 KiB
TypeScript
20 lines
1.1 KiB
TypeScript
import { ChatAggregate } from '../Chat/ChatAggregate';
|
|
import { ChatArchiveAggregate } from '../Chat/ChatArchiveAggregate';
|
|
import { IBaseRepository } from './IBaseRepository';
|
|
|
|
export interface IChatRepository extends IBaseRepository<ChatAggregate> {
|
|
// Pagination operations with proper typing
|
|
findByPage(from: number, to: number): Promise<{ chats: ChatAggregate[], totalCount: number }>;
|
|
findByPageIncludingDeleted(from: number, to: number): Promise<{ chats: ChatAggregate[], totalCount: number }>;
|
|
|
|
// Chat-specific methods
|
|
findByUserId(userId: string): Promise<ChatAggregate[]>;
|
|
findByUserIdIncludingDeleted(userId: string): Promise<ChatAggregate[]>;
|
|
findByGameId(gameId: string): Promise<ChatAggregate | null>;
|
|
findActiveChatsForUser(userId: string): Promise<ChatAggregate[]>;
|
|
findInactiveChats(inactivityMinutes: number): Promise<ChatAggregate[]>;
|
|
archiveChat(chat: ChatAggregate): Promise<ChatArchiveAggregate>;
|
|
getArchivedChat(chatId: string): Promise<ChatArchiveAggregate | null>;
|
|
restoreFromArchive(chatId: string): Promise<ChatAggregate | null>;
|
|
}
|