import 'package:get_it/get_it.dart'; import 'package:trainhub_flutter/data/database/app_database.dart'; import 'package:trainhub_flutter/data/database/daos/exercise_dao.dart'; import 'package:trainhub_flutter/data/database/daos/training_plan_dao.dart'; import 'package:trainhub_flutter/data/database/daos/program_dao.dart'; import 'package:trainhub_flutter/data/database/daos/analysis_dao.dart'; import 'package:trainhub_flutter/data/database/daos/chat_dao.dart'; import 'package:trainhub_flutter/domain/repositories/exercise_repository.dart'; import 'package:trainhub_flutter/domain/repositories/training_plan_repository.dart'; import 'package:trainhub_flutter/domain/repositories/program_repository.dart'; import 'package:trainhub_flutter/domain/repositories/analysis_repository.dart'; import 'package:trainhub_flutter/domain/repositories/chat_repository.dart'; import 'package:trainhub_flutter/data/repositories/exercise_repository_impl.dart'; import 'package:trainhub_flutter/data/repositories/training_plan_repository_impl.dart'; import 'package:trainhub_flutter/data/repositories/program_repository_impl.dart'; import 'package:trainhub_flutter/data/repositories/analysis_repository_impl.dart'; import 'package:trainhub_flutter/data/repositories/chat_repository_impl.dart'; import 'package:trainhub_flutter/data/repositories/note_repository_impl.dart'; import 'package:trainhub_flutter/domain/repositories/note_repository.dart'; import 'package:trainhub_flutter/domain/services/ai_process_manager.dart'; import 'package:trainhub_flutter/domain/services/embedding_service.dart'; import 'package:trainhub_flutter/data/database/daos/knowledge_chunk_dao.dart'; final GetIt getIt = GetIt.instance; void init() { // AI Process Manager — must be registered before anything else so that the // window lifecycle hook can always find it via getIt(). getIt.registerSingleton(AiProcessManager()); // Database getIt.registerSingleton(AppDatabase()); // DAOs getIt.registerSingleton(ExerciseDao(getIt())); getIt.registerSingleton( TrainingPlanDao(getIt()), ); getIt.registerSingleton(ProgramDao(getIt())); getIt.registerSingleton(AnalysisDao(getIt())); getIt.registerSingleton(ChatDao(getIt())); getIt.registerSingleton( KnowledgeChunkDao(getIt()), ); // Services getIt.registerSingleton(EmbeddingService()); // Repositories getIt.registerLazySingleton( () => ExerciseRepositoryImpl(getIt()), ); getIt.registerLazySingleton( () => TrainingPlanRepositoryImpl(getIt()), ); getIt.registerLazySingleton( () => ProgramRepositoryImpl(getIt()), ); getIt.registerLazySingleton( () => AnalysisRepositoryImpl(getIt()), ); getIt.registerLazySingleton( () => ChatRepositoryImpl(getIt()), ); getIt.registerLazySingleton( () => NoteRepositoryImpl( getIt(), getIt(), ), ); }