1use crate::application::ports::mqtt_energy_port::MqttEnergyPort;
2use crate::application::use_cases::boinc_use_cases::BoincUseCases;
3use crate::application::use_cases::consent_use_cases::ConsentUseCases;
4use crate::application::use_cases::module_registry_use_cases::ModuleRegistryUseCases;
5use crate::application::use_cases::{
6 AccountUseCases, AchievementUseCases, AcpUseCases, AgSessionUseCases, AgeRequestUseCases,
7 AuditLogUseCases, AuthUseCases, BoardDashboardUseCases, BoardDecisionUseCases,
8 BoardMemberUseCases, BudgetUseCases, BuildingUseCases, CallForFundsUseCases, CdcUseCases,
9 ChallengeUseCases, ChargeDistributionUseCases, ContractorEvaluationUseCases,
10 ContractorReportUseCases, ConvocationUseCases, DashboardUseCases, DocumentUseCases,
11 EnergyBillUploadUseCases, EnergyCampaignUseCases, EtatDateUseCases, ExpenseUseCases,
12 FinancialReportUseCases, GamificationStatsUseCases, GdprArt30UseCases, GdprUseCases,
13 IndividualMemberUseCases, IoTUseCases, JournalEntryUseCases, LienNotaireUseCases,
14 LinkyUseCases, LocalExchangeUseCases, MagicLinkUseCases, MandateUseCases, MeetingUseCases,
15 NoticeUseCases, NotificationUseCases, OrganizationUseCases, OwnerContributionUseCases,
16 OwnerUseCases, PaymentMethodUseCases, PaymentReminderUseCases, PaymentUseCases, PcnUseCases,
17 PollUseCases, PortfolioUseCases, QuoteUseCases, ResolutionUseCases, ResourceBookingUseCases,
18 RoleDelegationUseCases, SecurityIncidentUseCases, ServiceProviderUseCases,
19 SharedObjectUseCases, SkillUseCases, StatsUseCases, SyndicResponseUseCases,
20 TechnicalInspectionUseCases, TechnicalSpecUseCases, TicketUseCases, TwoFactorUseCases,
21 UnitOwnerUseCases, UnitUseCases, UserUseCases, WorkReportUseCases,
22};
23use crate::infrastructure::audit_logger::AuditLogger;
24use crate::infrastructure::database::repositories::{
25 PostgresModuleRegistry, PostgresSyndicResponseRepository, PostgresTicketRepository,
26};
27use crate::infrastructure::email::EmailService;
28use crate::infrastructure::pool::DbPool;
29use std::sync::Arc;
30
31pub struct AppState {
32 pub account_use_cases: Arc<AccountUseCases>,
33 pub acp_use_cases: Arc<AcpUseCases>,
34 pub module_registry_use_cases: Arc<ModuleRegistryUseCases>,
36 pub audit_log_use_cases: Arc<AuditLogUseCases>,
37 pub auth_use_cases: Arc<AuthUseCases>,
38 pub building_use_cases: Arc<BuildingUseCases>,
39 pub budget_use_cases: Arc<BudgetUseCases>,
40 pub unit_use_cases: Arc<UnitUseCases>,
41 pub owner_use_cases: Arc<OwnerUseCases>,
42 pub unit_owner_use_cases: Arc<UnitOwnerUseCases>,
43 pub expense_use_cases: Arc<ExpenseUseCases>,
44 pub charge_distribution_use_cases: Arc<ChargeDistributionUseCases>,
45 pub meeting_use_cases: Arc<MeetingUseCases>,
46 pub convocation_use_cases: Arc<ConvocationUseCases>,
47 pub resolution_use_cases: Arc<ResolutionUseCases>,
48 pub ticket_use_cases: Arc<TicketUseCases>,
49 pub two_factor_use_cases: Arc<TwoFactorUseCases>,
50 pub notification_use_cases: Arc<NotificationUseCases>,
51 pub payment_use_cases: Arc<PaymentUseCases>,
52 pub payment_method_use_cases: Arc<PaymentMethodUseCases>,
53 pub poll_use_cases: Arc<PollUseCases>,
54 pub portfolio_use_cases: Arc<PortfolioUseCases>,
55 pub quote_use_cases: Arc<QuoteUseCases>,
56 pub local_exchange_use_cases: Arc<LocalExchangeUseCases>,
57 pub notice_use_cases: Arc<NoticeUseCases>,
58 pub organization_use_cases: Arc<OrganizationUseCases>,
59 pub resource_booking_use_cases: Arc<ResourceBookingUseCases>,
60 pub shared_object_use_cases: Arc<SharedObjectUseCases>,
61 pub skill_use_cases: Arc<SkillUseCases>,
62 pub stats_use_cases: Arc<StatsUseCases>,
63 pub technical_inspection_use_cases: Arc<TechnicalInspectionUseCases>,
64 pub work_report_use_cases: Arc<WorkReportUseCases>,
65 pub document_use_cases: Arc<DocumentUseCases>,
66 pub energy_campaign_use_cases: Arc<EnergyCampaignUseCases>,
67 pub energy_bill_upload_use_cases: Arc<EnergyBillUploadUseCases>,
68 pub etat_date_use_cases: Arc<EtatDateUseCases>,
69 pub pcn_use_cases: Arc<PcnUseCases>,
70 pub payment_reminder_use_cases: Arc<PaymentReminderUseCases>,
71 pub gdpr_art30_use_cases: Arc<GdprArt30UseCases>,
72 pub gdpr_use_cases: Arc<GdprUseCases>,
73 pub iot_use_cases: Arc<IoTUseCases>,
74 pub linky_use_cases: Arc<LinkyUseCases>,
75 pub board_member_use_cases: Arc<BoardMemberUseCases>,
76 pub board_decision_use_cases: Arc<BoardDecisionUseCases>,
77 pub cdc_use_cases: Arc<CdcUseCases>,
78 pub board_dashboard_use_cases: Arc<BoardDashboardUseCases>,
79 pub dashboard_use_cases: Arc<DashboardUseCases>,
80 pub financial_report_use_cases: Arc<FinancialReportUseCases>,
81 pub owner_contribution_use_cases: Arc<OwnerContributionUseCases>,
82 pub call_for_funds_use_cases: Arc<CallForFundsUseCases>,
83 pub journal_entry_use_cases: Arc<JournalEntryUseCases>,
84 pub achievement_use_cases: Arc<AchievementUseCases>,
85 pub challenge_use_cases: Arc<ChallengeUseCases>,
86 pub gamification_stats_use_cases: Arc<GamificationStatsUseCases>,
87 pub ag_session_use_cases: Arc<AgSessionUseCases>,
88 pub age_request_use_cases: Arc<AgeRequestUseCases>,
89 pub contractor_report_use_cases: Arc<ContractorReportUseCases>,
90 pub security_incident_use_cases: Arc<SecurityIncidentUseCases>,
91 pub service_provider_use_cases: Arc<ServiceProviderUseCases>,
92 pub individual_member_use_cases: Arc<IndividualMemberUseCases>,
93 pub consent_use_cases: Arc<ConsentUseCases>,
94 pub audit_logger: Arc<AuditLogger>,
95 pub email_service: Arc<EmailService>,
96 pub pool: DbPool, pub mqtt_energy_adapter: Arc<dyn MqttEnergyPort>,
99 pub boinc_use_cases: Arc<BoincUseCases>,
100 pub user_use_cases: Arc<UserUseCases>,
101 pub magic_link_use_cases: Arc<MagicLinkUseCases>,
103 pub lien_notaire_use_cases: Arc<LienNotaireUseCases>,
106 pub mandate_use_cases: Arc<MandateUseCases>,
109 pub role_delegation_use_cases: Arc<RoleDelegationUseCases>,
111 pub syndic_response_use_cases:
116 Arc<SyndicResponseUseCases<PostgresSyndicResponseRepository, PostgresTicketRepository>>,
117 pub technical_spec_use_cases: Arc<TechnicalSpecUseCases>,
119 pub contractor_evaluation_use_cases: Arc<ContractorEvaluationUseCases>,
122}
123
124impl AppState {
125 #[allow(clippy::too_many_arguments)]
126 pub fn new(
127 account_use_cases: AccountUseCases,
128 acp_use_cases: AcpUseCases,
129 audit_log_use_cases: AuditLogUseCases,
130 auth_use_cases: AuthUseCases,
131 building_use_cases: BuildingUseCases,
132 budget_use_cases: BudgetUseCases,
133 unit_use_cases: UnitUseCases,
134 owner_use_cases: OwnerUseCases,
135 unit_owner_use_cases: UnitOwnerUseCases,
136 expense_use_cases: ExpenseUseCases,
137 charge_distribution_use_cases: ChargeDistributionUseCases,
138 meeting_use_cases: MeetingUseCases,
139 convocation_use_cases: ConvocationUseCases,
140 resolution_use_cases: ResolutionUseCases,
141 ticket_use_cases: TicketUseCases,
142 two_factor_use_cases: TwoFactorUseCases,
143 notification_use_cases: NotificationUseCases,
144 payment_use_cases: Arc<PaymentUseCases>,
145 payment_method_use_cases: PaymentMethodUseCases,
146 poll_use_cases: PollUseCases,
147 portfolio_use_cases: PortfolioUseCases,
148 quote_use_cases: QuoteUseCases,
149 local_exchange_use_cases: LocalExchangeUseCases,
150 notice_use_cases: NoticeUseCases,
151 organization_use_cases: OrganizationUseCases,
152 resource_booking_use_cases: ResourceBookingUseCases,
153 shared_object_use_cases: SharedObjectUseCases,
154 skill_use_cases: SkillUseCases,
155 stats_use_cases: StatsUseCases,
156 technical_inspection_use_cases: TechnicalInspectionUseCases,
157 work_report_use_cases: WorkReportUseCases,
158 document_use_cases: DocumentUseCases,
159 energy_campaign_use_cases: EnergyCampaignUseCases,
160 energy_bill_upload_use_cases: EnergyBillUploadUseCases,
161 etat_date_use_cases: EtatDateUseCases,
162 pcn_use_cases: PcnUseCases,
163 payment_reminder_use_cases: PaymentReminderUseCases,
164 gdpr_art30_use_cases: GdprArt30UseCases,
165 gdpr_use_cases: GdprUseCases,
166 iot_use_cases: IoTUseCases,
167 linky_use_cases: LinkyUseCases,
168 board_member_use_cases: BoardMemberUseCases,
169 board_decision_use_cases: BoardDecisionUseCases,
170 cdc_use_cases: CdcUseCases,
171 board_dashboard_use_cases: BoardDashboardUseCases,
172 dashboard_use_cases: DashboardUseCases,
173 financial_report_use_cases: FinancialReportUseCases,
174 owner_contribution_use_cases: OwnerContributionUseCases,
175 call_for_funds_use_cases: CallForFundsUseCases,
176 journal_entry_use_cases: JournalEntryUseCases,
177 achievement_use_cases: AchievementUseCases,
178 challenge_use_cases: ChallengeUseCases,
179 gamification_stats_use_cases: GamificationStatsUseCases,
180 ag_session_use_cases: AgSessionUseCases,
181 age_request_use_cases: AgeRequestUseCases,
182 contractor_report_use_cases: ContractorReportUseCases,
183 security_incident_use_cases: SecurityIncidentUseCases,
184 service_provider_use_cases: ServiceProviderUseCases,
185 individual_member_use_cases: IndividualMemberUseCases,
186 consent_use_cases: ConsentUseCases,
187 audit_logger: AuditLogger,
188 email_service: EmailService,
189 pool: DbPool,
190 mqtt_energy_adapter: Arc<dyn MqttEnergyPort>,
191 boinc_use_cases: BoincUseCases,
192 user_use_cases: UserUseCases,
193 magic_link_use_cases: MagicLinkUseCases,
194 lien_notaire_use_cases: LienNotaireUseCases,
195 mandate_use_cases: MandateUseCases,
196 role_delegation_use_cases: RoleDelegationUseCases,
197 syndic_response_use_cases: SyndicResponseUseCases<
198 PostgresSyndicResponseRepository,
199 PostgresTicketRepository,
200 >,
201 technical_spec_use_cases: TechnicalSpecUseCases,
202 contractor_evaluation_use_cases: ContractorEvaluationUseCases,
203 ) -> Self {
204 let acp_use_cases = Arc::new(acp_use_cases);
209 let module_registry_use_cases = Arc::new(ModuleRegistryUseCases::new(
210 Arc::new(PostgresModuleRegistry::new(pool.clone())),
211 acp_use_cases.clone(),
212 ));
213
214 Self {
215 account_use_cases: Arc::new(account_use_cases),
216 acp_use_cases,
217 module_registry_use_cases,
218 audit_log_use_cases: Arc::new(audit_log_use_cases),
219 auth_use_cases: Arc::new(auth_use_cases),
220 building_use_cases: Arc::new(building_use_cases),
221 budget_use_cases: Arc::new(budget_use_cases),
222 unit_use_cases: Arc::new(unit_use_cases),
223 owner_use_cases: Arc::new(owner_use_cases),
224 unit_owner_use_cases: Arc::new(unit_owner_use_cases),
225 expense_use_cases: Arc::new(expense_use_cases),
226 charge_distribution_use_cases: Arc::new(charge_distribution_use_cases),
227 meeting_use_cases: Arc::new(meeting_use_cases),
228 convocation_use_cases: Arc::new(convocation_use_cases),
229 resolution_use_cases: Arc::new(resolution_use_cases),
230 ticket_use_cases: Arc::new(ticket_use_cases),
231 two_factor_use_cases: Arc::new(two_factor_use_cases),
232 notification_use_cases: Arc::new(notification_use_cases),
233 payment_use_cases,
234 payment_method_use_cases: Arc::new(payment_method_use_cases),
235 poll_use_cases: Arc::new(poll_use_cases),
236 portfolio_use_cases: Arc::new(portfolio_use_cases),
237 quote_use_cases: Arc::new(quote_use_cases),
238 local_exchange_use_cases: Arc::new(local_exchange_use_cases),
239 notice_use_cases: Arc::new(notice_use_cases),
240 organization_use_cases: Arc::new(organization_use_cases),
241 resource_booking_use_cases: Arc::new(resource_booking_use_cases),
242 shared_object_use_cases: Arc::new(shared_object_use_cases),
243 skill_use_cases: Arc::new(skill_use_cases),
244 stats_use_cases: Arc::new(stats_use_cases),
245 technical_inspection_use_cases: Arc::new(technical_inspection_use_cases),
246 work_report_use_cases: Arc::new(work_report_use_cases),
247 document_use_cases: Arc::new(document_use_cases),
248 energy_campaign_use_cases: Arc::new(energy_campaign_use_cases),
249 energy_bill_upload_use_cases: Arc::new(energy_bill_upload_use_cases),
250 etat_date_use_cases: Arc::new(etat_date_use_cases),
251 pcn_use_cases: Arc::new(pcn_use_cases),
252 payment_reminder_use_cases: Arc::new(payment_reminder_use_cases),
253 gdpr_art30_use_cases: Arc::new(gdpr_art30_use_cases),
254 gdpr_use_cases: Arc::new(gdpr_use_cases),
255 iot_use_cases: Arc::new(iot_use_cases),
256 linky_use_cases: Arc::new(linky_use_cases),
257 board_member_use_cases: Arc::new(board_member_use_cases),
258 board_decision_use_cases: Arc::new(board_decision_use_cases),
259 cdc_use_cases: Arc::new(cdc_use_cases),
260 board_dashboard_use_cases: Arc::new(board_dashboard_use_cases),
261 dashboard_use_cases: Arc::new(dashboard_use_cases),
262 financial_report_use_cases: Arc::new(financial_report_use_cases),
263 owner_contribution_use_cases: Arc::new(owner_contribution_use_cases),
264 call_for_funds_use_cases: Arc::new(call_for_funds_use_cases),
265 journal_entry_use_cases: Arc::new(journal_entry_use_cases),
266 achievement_use_cases: Arc::new(achievement_use_cases),
267 challenge_use_cases: Arc::new(challenge_use_cases),
268 gamification_stats_use_cases: Arc::new(gamification_stats_use_cases),
269 ag_session_use_cases: Arc::new(ag_session_use_cases),
270 age_request_use_cases: Arc::new(age_request_use_cases),
271 contractor_report_use_cases: Arc::new(contractor_report_use_cases),
272 security_incident_use_cases: Arc::new(security_incident_use_cases),
273 service_provider_use_cases: Arc::new(service_provider_use_cases),
274 individual_member_use_cases: Arc::new(individual_member_use_cases),
275 consent_use_cases: Arc::new(consent_use_cases),
276 audit_logger: Arc::new(audit_logger),
277 email_service: Arc::new(email_service),
278 pool,
279 mqtt_energy_adapter,
280 boinc_use_cases: Arc::new(boinc_use_cases),
281 user_use_cases: Arc::new(user_use_cases),
282 magic_link_use_cases: Arc::new(magic_link_use_cases),
283 lien_notaire_use_cases: Arc::new(lien_notaire_use_cases),
284 mandate_use_cases: Arc::new(mandate_use_cases),
285 role_delegation_use_cases: Arc::new(role_delegation_use_cases),
286 syndic_response_use_cases: Arc::new(syndic_response_use_cases),
287 technical_spec_use_cases: Arc::new(technical_spec_use_cases),
288 contractor_evaluation_use_cases: Arc::new(contractor_evaluation_use_cases),
289 }
290 }
291}