|
1 |
| -import 'package:ht_api/src/config/environment_config.dart'; |
2 |
| -import 'package:ht_api/src/rbac/permission_service.dart'; |
3 |
| -import 'package:ht_api/src/services/auth_service.dart'; |
4 |
| -import 'package:ht_api/src/services/auth_token_service.dart'; |
5 |
| -import 'package:ht_api/src/services/dashboard_summary_service.dart'; |
6 |
| -import 'package:ht_api/src/services/database_seeding_service.dart'; |
7 |
| -import 'package:ht_api/src/services/default_user_preference_limit_service.dart'; |
8 |
| -import 'package:ht_api/src/services/jwt_auth_token_service.dart'; |
9 |
| -import 'package:ht_api/src/services/mongodb_token_blacklist_service.dart'; |
10 |
| -import 'package:ht_api/src/services/mongodb_verification_code_storage_service.dart'; |
11 |
| -import 'package:ht_api/src/services/token_blacklist_service.dart'; |
12 |
| -import 'package:ht_api/src/services/user_preference_limit_service.dart'; |
13 |
| -import 'package:ht_api/src/services/verification_code_storage_service.dart'; |
14 |
| -import 'package:ht_data_mongodb/ht_data_mongodb.dart'; |
15 |
| -import 'package:ht_data_repository/ht_data_repository.dart'; |
16 |
| -import 'package:ht_email_repository/ht_email_repository.dart'; |
17 |
| -import 'package:ht_email_sendgrid/ht_email_sendgrid.dart'; |
18 |
| -import 'package:ht_http_client/ht_http_client.dart'; |
19 |
| -import 'package:ht_shared/ht_shared.dart'; |
| 1 | +// ignore_for_file: public_member_api_docs |
| 2 | + |
| 3 | +import 'package:core/core.dart'; |
| 4 | +import 'package:data_mongodb/data_mongodb.dart'; |
| 5 | +import 'package:data_repository/data_repository.dart'; |
| 6 | +import 'package:email_repository/email_repository.dart'; |
| 7 | +import 'package:email_sendgrid/email_sendgrid.dart'; |
| 8 | +import 'package:flutter_news_app_api_server_full_source_code/src/config/environment_config.dart'; |
| 9 | +import 'package:flutter_news_app_api_server_full_source_code/src/rbac/permission_service.dart'; |
| 10 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/auth_service.dart'; |
| 11 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/auth_token_service.dart'; |
| 12 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart'; |
| 13 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/database_seeding_service.dart'; |
| 14 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/default_user_preference_limit_service.dart'; |
| 15 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/jwt_auth_token_service.dart'; |
| 16 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/mongodb_token_blacklist_service.dart'; |
| 17 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/mongodb_verification_code_storage_service.dart'; |
| 18 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/token_blacklist_service.dart'; |
| 19 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/user_preference_limit_service.dart'; |
| 20 | +import 'package:flutter_news_app_api_server_full_source_code/src/services/verification_code_storage_service.dart'; |
| 21 | +import 'package:http_client/http_client.dart'; |
20 | 22 | import 'package:logging/logging.dart';
|
21 | 23 |
|
22 | 24 | /// {@template app_dependencies}
|
@@ -44,16 +46,16 @@ class AppDependencies {
|
44 | 46 | late final MongoDbConnectionManager _mongoDbConnectionManager;
|
45 | 47 |
|
46 | 48 | // Repositories
|
47 |
| - late final HtDataRepository<Headline> headlineRepository; |
48 |
| - late final HtDataRepository<Topic> topicRepository; |
49 |
| - late final HtDataRepository<Source> sourceRepository; |
50 |
| - late final HtDataRepository<Country> countryRepository; |
51 |
| - late final HtDataRepository<User> userRepository; |
52 |
| - late final HtDataRepository<UserAppSettings> userAppSettingsRepository; |
53 |
| - late final HtDataRepository<UserContentPreferences> |
| 49 | + late final DataRepository<Headline> headlineRepository; |
| 50 | + late final DataRepository<Topic> topicRepository; |
| 51 | + late final DataRepository<Source> sourceRepository; |
| 52 | + late final DataRepository<Country> countryRepository; |
| 53 | + late final DataRepository<User> userRepository; |
| 54 | + late final DataRepository<UserAppSettings> userAppSettingsRepository; |
| 55 | + late final DataRepository<UserContentPreferences> |
54 | 56 | userContentPreferencesRepository;
|
55 |
| - late final HtDataRepository<RemoteConfig> remoteConfigRepository; |
56 |
| - late final HtEmailRepository emailRepository; |
| 57 | + late final DataRepository<RemoteConfig> remoteConfigRepository; |
| 58 | + late final EmailRepository emailRepository; |
57 | 59 |
|
58 | 60 | // Services
|
59 | 61 | late final TokenBlacklistService tokenBlacklistService;
|
@@ -92,99 +94,98 @@ class AppDependencies {
|
92 | 94 | _log.info('Database seeding complete.');
|
93 | 95 |
|
94 | 96 | // 3. Initialize Data Clients (MongoDB implementation)
|
95 |
| - final headlineClient = HtDataMongodb<Headline>( |
| 97 | + final headlineClient = DataMongodb<Headline>( |
96 | 98 | connectionManager: _mongoDbConnectionManager,
|
97 | 99 | modelName: 'headlines',
|
98 | 100 | fromJson: Headline.fromJson,
|
99 | 101 | toJson: (item) => item.toJson(),
|
100 | 102 | searchableFields: ['title'],
|
101 |
| - logger: Logger('HtDataMongodb<Headline>'), |
| 103 | + logger: Logger('DataMongodb<Headline>'), |
102 | 104 | );
|
103 |
| - final topicClient = HtDataMongodb<Topic>( |
| 105 | + final topicClient = DataMongodb<Topic>( |
104 | 106 | connectionManager: _mongoDbConnectionManager,
|
105 | 107 | modelName: 'topics',
|
106 | 108 | fromJson: Topic.fromJson,
|
107 | 109 | toJson: (item) => item.toJson(),
|
108 | 110 | searchableFields: ['name'],
|
109 |
| - logger: Logger('HtDataMongodb<Topic>'), |
| 111 | + logger: Logger('DataMongodb<Topic>'), |
110 | 112 | );
|
111 |
| - final sourceClient = HtDataMongodb<Source>( |
| 113 | + final sourceClient = DataMongodb<Source>( |
112 | 114 | connectionManager: _mongoDbConnectionManager,
|
113 | 115 | modelName: 'sources',
|
114 | 116 | fromJson: Source.fromJson,
|
115 | 117 | toJson: (item) => item.toJson(),
|
116 | 118 | searchableFields: ['name'],
|
117 |
| - logger: Logger('HtDataMongodb<Source>'), |
| 119 | + logger: Logger('DataMongodb<Source>'), |
118 | 120 | );
|
119 |
| - final countryClient = HtDataMongodb<Country>( |
| 121 | + final countryClient = DataMongodb<Country>( |
120 | 122 | connectionManager: _mongoDbConnectionManager,
|
121 | 123 | modelName: 'countries',
|
122 | 124 | fromJson: Country.fromJson,
|
123 | 125 | toJson: (item) => item.toJson(),
|
124 |
| - logger: Logger('HtDataMongodb<Country>'), |
| 126 | + logger: Logger('DataMongodb<Country>'), |
125 | 127 | );
|
126 |
| - final userClient = HtDataMongodb<User>( |
| 128 | + final userClient = DataMongodb<User>( |
127 | 129 | connectionManager: _mongoDbConnectionManager,
|
128 | 130 | modelName: 'users',
|
129 | 131 | fromJson: User.fromJson,
|
130 | 132 | toJson: (item) => item.toJson(),
|
131 |
| - logger: Logger('HtDataMongodb<User>'), |
| 133 | + logger: Logger('DataMongodb<User>'), |
132 | 134 | );
|
133 |
| - final userAppSettingsClient = HtDataMongodb<UserAppSettings>( |
| 135 | + final userAppSettingsClient = DataMongodb<UserAppSettings>( |
134 | 136 | connectionManager: _mongoDbConnectionManager,
|
135 | 137 | modelName: 'user_app_settings',
|
136 | 138 | fromJson: UserAppSettings.fromJson,
|
137 | 139 | toJson: (item) => item.toJson(),
|
138 |
| - logger: Logger('HtDataMongodb<UserAppSettings>'), |
139 |
| - ); |
140 |
| - final userContentPreferencesClient = |
141 |
| - HtDataMongodb<UserContentPreferences>( |
142 |
| - connectionManager: _mongoDbConnectionManager, |
143 |
| - modelName: 'user_content_preferences', |
144 |
| - fromJson: UserContentPreferences.fromJson, |
145 |
| - toJson: (item) => item.toJson(), |
146 |
| - logger: Logger('HtDataMongodb<UserContentPreferences>'), |
147 |
| - ); |
148 |
| - final remoteConfigClient = HtDataMongodb<RemoteConfig>( |
| 140 | + logger: Logger('DataMongodb<UserAppSettings>'), |
| 141 | + ); |
| 142 | + final userContentPreferencesClient = DataMongodb<UserContentPreferences>( |
| 143 | + connectionManager: _mongoDbConnectionManager, |
| 144 | + modelName: 'user_content_preferences', |
| 145 | + fromJson: UserContentPreferences.fromJson, |
| 146 | + toJson: (item) => item.toJson(), |
| 147 | + logger: Logger('DataMongodb<UserContentPreferences>'), |
| 148 | + ); |
| 149 | + final remoteConfigClient = DataMongodb<RemoteConfig>( |
149 | 150 | connectionManager: _mongoDbConnectionManager,
|
150 | 151 | modelName: 'remote_configs',
|
151 | 152 | fromJson: RemoteConfig.fromJson,
|
152 | 153 | toJson: (item) => item.toJson(),
|
153 |
| - logger: Logger('HtDataMongodb<RemoteConfig>'), |
| 154 | + logger: Logger('DataMongodb<RemoteConfig>'), |
154 | 155 | );
|
155 | 156 |
|
156 | 157 | // 4. Initialize Repositories
|
157 |
| - headlineRepository = HtDataRepository(dataClient: headlineClient); |
158 |
| - topicRepository = HtDataRepository(dataClient: topicClient); |
159 |
| - sourceRepository = HtDataRepository(dataClient: sourceClient); |
160 |
| - countryRepository = HtDataRepository(dataClient: countryClient); |
161 |
| - userRepository = HtDataRepository(dataClient: userClient); |
162 |
| - userAppSettingsRepository = HtDataRepository( |
| 158 | + headlineRepository = DataRepository(dataClient: headlineClient); |
| 159 | + topicRepository = DataRepository(dataClient: topicClient); |
| 160 | + sourceRepository = DataRepository(dataClient: sourceClient); |
| 161 | + countryRepository = DataRepository(dataClient: countryClient); |
| 162 | + userRepository = DataRepository(dataClient: userClient); |
| 163 | + userAppSettingsRepository = DataRepository( |
163 | 164 | dataClient: userAppSettingsClient,
|
164 | 165 | );
|
165 |
| - userContentPreferencesRepository = HtDataRepository( |
| 166 | + userContentPreferencesRepository = DataRepository( |
166 | 167 | dataClient: userContentPreferencesClient,
|
167 | 168 | );
|
168 |
| - remoteConfigRepository = HtDataRepository(dataClient: remoteConfigClient); |
| 169 | + remoteConfigRepository = DataRepository(dataClient: remoteConfigClient); |
169 | 170 |
|
170 | 171 | // Configure the HTTP client for SendGrid.
|
171 |
| - // The HtHttpClient's AuthInterceptor will use the tokenProvider to add |
| 172 | + // The HttpClient's AuthInterceptor will use the tokenProvider to add |
172 | 173 | // the 'Authorization: Bearer <SENDGRID_API_KEY>' header.
|
173 | 174 | final sendGridApiBase =
|
174 | 175 | EnvironmentConfig.sendGridApiUrl ?? 'https://api.sendgrid.com';
|
175 |
| - final sendGridHttpClient = HtHttpClient( |
| 176 | + final sendGridHttpClient = HttpClient( |
176 | 177 | baseUrl: '$sendGridApiBase/v3',
|
177 | 178 | tokenProvider: () async => EnvironmentConfig.sendGridApiKey,
|
178 |
| - logger: Logger('HtEmailSendgridClient'), |
| 179 | + logger: Logger('EmailSendgridClient'), |
179 | 180 | );
|
180 | 181 |
|
181 | 182 | // Initialize the SendGrid email client with the dedicated HTTP client.
|
182 |
| - final emailClient = HtEmailSendGrid( |
| 183 | + final emailClient = EmailSendGrid( |
183 | 184 | httpClient: sendGridHttpClient,
|
184 |
| - log: Logger('HtEmailSendgrid'), |
| 185 | + log: Logger('EmailSendgrid'), |
185 | 186 | );
|
186 | 187 |
|
187 |
| - emailRepository = HtEmailRepository(emailClient: emailClient); |
| 188 | + emailRepository = EmailRepository(emailClient: emailClient); |
188 | 189 |
|
189 | 190 | // 5. Initialize Services
|
190 | 191 | tokenBlacklistService = MongoDbTokenBlacklistService(
|
|
0 commit comments