|
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