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::{
5 AccountUseCases, AchievementUseCases, AgSessionUseCases, AgeRequestUseCases, AuditLogUseCases,
6 AuthUseCases, BoardDashboardUseCases, BoardDecisionUseCases, BoardMemberUseCases,
7 BudgetUseCases, BuildingUseCases, CallForFundsUseCases, ChallengeUseCases,
8 ChargeDistributionUseCases, ContractorReportUseCases, ConvocationUseCases, DashboardUseCases,
9 DocumentUseCases, EnergyBillUploadUseCases, EnergyCampaignUseCases, EtatDateUseCases,
10 ExpenseUseCases, FinancialReportUseCases, GamificationStatsUseCases, GdprArt30UseCases,
11 GdprUseCases, IndividualMemberUseCases, IoTUseCases, JournalEntryUseCases, LinkyUseCases,
12 LocalExchangeUseCases, MeetingUseCases, NoticeUseCases, NotificationUseCases,
13 OrganizationUseCases, OwnerContributionUseCases, OwnerUseCases, PaymentMethodUseCases,
14 PaymentReminderUseCases, PaymentUseCases, PcnUseCases, PollUseCases, QuoteUseCases,
15 ResolutionUseCases, ResourceBookingUseCases, SecurityIncidentUseCases, ServiceProviderUseCases,
16 SharedObjectUseCases, SkillUseCases, StatsUseCases, TechnicalInspectionUseCases,
17 TicketUseCases, TwoFactorUseCases, UnitOwnerUseCases, UnitUseCases, UserUseCases,
18 WorkReportUseCases,
19};
20use crate::infrastructure::audit_logger::AuditLogger;
21use crate::infrastructure::email::EmailService;
22use crate::infrastructure::pool::DbPool;
23use std::sync::Arc;
24
25pub struct AppState {
26 pub account_use_cases: Arc<AccountUseCases>,
27 pub audit_log_use_cases: Arc<AuditLogUseCases>,
28 pub auth_use_cases: Arc<AuthUseCases>,
29 pub building_use_cases: Arc<BuildingUseCases>,
30 pub budget_use_cases: Arc<BudgetUseCases>,
31 pub unit_use_cases: Arc<UnitUseCases>,
32 pub owner_use_cases: Arc<OwnerUseCases>,
33 pub unit_owner_use_cases: Arc<UnitOwnerUseCases>,
34 pub expense_use_cases: Arc<ExpenseUseCases>,
35 pub charge_distribution_use_cases: Arc<ChargeDistributionUseCases>,
36 pub meeting_use_cases: Arc<MeetingUseCases>,
37 pub convocation_use_cases: Arc<ConvocationUseCases>,
38 pub resolution_use_cases: Arc<ResolutionUseCases>,
39 pub ticket_use_cases: Arc<TicketUseCases>,
40 pub two_factor_use_cases: Arc<TwoFactorUseCases>,
41 pub notification_use_cases: Arc<NotificationUseCases>,
42 pub payment_use_cases: Arc<PaymentUseCases>,
43 pub payment_method_use_cases: Arc<PaymentMethodUseCases>,
44 pub poll_use_cases: Arc<PollUseCases>,
45 pub quote_use_cases: Arc<QuoteUseCases>,
46 pub local_exchange_use_cases: Arc<LocalExchangeUseCases>,
47 pub notice_use_cases: Arc<NoticeUseCases>,
48 pub organization_use_cases: Arc<OrganizationUseCases>,
49 pub resource_booking_use_cases: Arc<ResourceBookingUseCases>,
50 pub shared_object_use_cases: Arc<SharedObjectUseCases>,
51 pub skill_use_cases: Arc<SkillUseCases>,
52 pub stats_use_cases: Arc<StatsUseCases>,
53 pub technical_inspection_use_cases: Arc<TechnicalInspectionUseCases>,
54 pub work_report_use_cases: Arc<WorkReportUseCases>,
55 pub document_use_cases: Arc<DocumentUseCases>,
56 pub energy_campaign_use_cases: Arc<EnergyCampaignUseCases>,
57 pub energy_bill_upload_use_cases: Arc<EnergyBillUploadUseCases>,
58 pub etat_date_use_cases: Arc<EtatDateUseCases>,
59 pub pcn_use_cases: Arc<PcnUseCases>,
60 pub payment_reminder_use_cases: Arc<PaymentReminderUseCases>,
61 pub gdpr_art30_use_cases: Arc<GdprArt30UseCases>,
62 pub gdpr_use_cases: Arc<GdprUseCases>,
63 pub iot_use_cases: Arc<IoTUseCases>,
64 pub linky_use_cases: Arc<LinkyUseCases>,
65 pub board_member_use_cases: Arc<BoardMemberUseCases>,
66 pub board_decision_use_cases: Arc<BoardDecisionUseCases>,
67 pub board_dashboard_use_cases: Arc<BoardDashboardUseCases>,
68 pub dashboard_use_cases: Arc<DashboardUseCases>,
69 pub financial_report_use_cases: Arc<FinancialReportUseCases>,
70 pub owner_contribution_use_cases: Arc<OwnerContributionUseCases>,
71 pub call_for_funds_use_cases: Arc<CallForFundsUseCases>,
72 pub journal_entry_use_cases: Arc<JournalEntryUseCases>,
73 pub achievement_use_cases: Arc<AchievementUseCases>,
74 pub challenge_use_cases: Arc<ChallengeUseCases>,
75 pub gamification_stats_use_cases: Arc<GamificationStatsUseCases>,
76 pub ag_session_use_cases: Arc<AgSessionUseCases>,
77 pub age_request_use_cases: Arc<AgeRequestUseCases>,
78 pub contractor_report_use_cases: Arc<ContractorReportUseCases>,
79 pub security_incident_use_cases: Arc<SecurityIncidentUseCases>,
80 pub service_provider_use_cases: Arc<ServiceProviderUseCases>,
81 pub individual_member_use_cases: Arc<IndividualMemberUseCases>,
82 pub consent_use_cases: Arc<ConsentUseCases>,
83 pub audit_logger: Arc<AuditLogger>,
84 pub email_service: Arc<EmailService>,
85 pub pool: DbPool, pub mqtt_energy_adapter: Arc<dyn MqttEnergyPort>,
88 pub boinc_use_cases: Arc<BoincUseCases>,
89 pub user_use_cases: Arc<UserUseCases>,
90}
91
92impl AppState {
93 #[allow(clippy::too_many_arguments)]
94 pub fn new(
95 account_use_cases: AccountUseCases,
96 audit_log_use_cases: AuditLogUseCases,
97 auth_use_cases: AuthUseCases,
98 building_use_cases: BuildingUseCases,
99 budget_use_cases: BudgetUseCases,
100 unit_use_cases: UnitUseCases,
101 owner_use_cases: OwnerUseCases,
102 unit_owner_use_cases: UnitOwnerUseCases,
103 expense_use_cases: ExpenseUseCases,
104 charge_distribution_use_cases: ChargeDistributionUseCases,
105 meeting_use_cases: MeetingUseCases,
106 convocation_use_cases: ConvocationUseCases,
107 resolution_use_cases: ResolutionUseCases,
108 ticket_use_cases: TicketUseCases,
109 two_factor_use_cases: TwoFactorUseCases,
110 notification_use_cases: NotificationUseCases,
111 payment_use_cases: Arc<PaymentUseCases>,
112 payment_method_use_cases: PaymentMethodUseCases,
113 poll_use_cases: PollUseCases,
114 quote_use_cases: QuoteUseCases,
115 local_exchange_use_cases: LocalExchangeUseCases,
116 notice_use_cases: NoticeUseCases,
117 organization_use_cases: OrganizationUseCases,
118 resource_booking_use_cases: ResourceBookingUseCases,
119 shared_object_use_cases: SharedObjectUseCases,
120 skill_use_cases: SkillUseCases,
121 stats_use_cases: StatsUseCases,
122 technical_inspection_use_cases: TechnicalInspectionUseCases,
123 work_report_use_cases: WorkReportUseCases,
124 document_use_cases: DocumentUseCases,
125 energy_campaign_use_cases: EnergyCampaignUseCases,
126 energy_bill_upload_use_cases: EnergyBillUploadUseCases,
127 etat_date_use_cases: EtatDateUseCases,
128 pcn_use_cases: PcnUseCases,
129 payment_reminder_use_cases: PaymentReminderUseCases,
130 gdpr_art30_use_cases: GdprArt30UseCases,
131 gdpr_use_cases: GdprUseCases,
132 iot_use_cases: IoTUseCases,
133 linky_use_cases: LinkyUseCases,
134 board_member_use_cases: BoardMemberUseCases,
135 board_decision_use_cases: BoardDecisionUseCases,
136 board_dashboard_use_cases: BoardDashboardUseCases,
137 dashboard_use_cases: DashboardUseCases,
138 financial_report_use_cases: FinancialReportUseCases,
139 owner_contribution_use_cases: OwnerContributionUseCases,
140 call_for_funds_use_cases: CallForFundsUseCases,
141 journal_entry_use_cases: JournalEntryUseCases,
142 achievement_use_cases: AchievementUseCases,
143 challenge_use_cases: ChallengeUseCases,
144 gamification_stats_use_cases: GamificationStatsUseCases,
145 ag_session_use_cases: AgSessionUseCases,
146 age_request_use_cases: AgeRequestUseCases,
147 contractor_report_use_cases: ContractorReportUseCases,
148 security_incident_use_cases: SecurityIncidentUseCases,
149 service_provider_use_cases: ServiceProviderUseCases,
150 individual_member_use_cases: IndividualMemberUseCases,
151 consent_use_cases: ConsentUseCases,
152 audit_logger: AuditLogger,
153 email_service: EmailService,
154 pool: DbPool,
155 mqtt_energy_adapter: Arc<dyn MqttEnergyPort>,
156 boinc_use_cases: BoincUseCases,
157 user_use_cases: UserUseCases,
158 ) -> Self {
159 Self {
160 account_use_cases: Arc::new(account_use_cases),
161 audit_log_use_cases: Arc::new(audit_log_use_cases),
162 auth_use_cases: Arc::new(auth_use_cases),
163 building_use_cases: Arc::new(building_use_cases),
164 budget_use_cases: Arc::new(budget_use_cases),
165 unit_use_cases: Arc::new(unit_use_cases),
166 owner_use_cases: Arc::new(owner_use_cases),
167 unit_owner_use_cases: Arc::new(unit_owner_use_cases),
168 expense_use_cases: Arc::new(expense_use_cases),
169 charge_distribution_use_cases: Arc::new(charge_distribution_use_cases),
170 meeting_use_cases: Arc::new(meeting_use_cases),
171 convocation_use_cases: Arc::new(convocation_use_cases),
172 resolution_use_cases: Arc::new(resolution_use_cases),
173 ticket_use_cases: Arc::new(ticket_use_cases),
174 two_factor_use_cases: Arc::new(two_factor_use_cases),
175 notification_use_cases: Arc::new(notification_use_cases),
176 payment_use_cases,
177 payment_method_use_cases: Arc::new(payment_method_use_cases),
178 poll_use_cases: Arc::new(poll_use_cases),
179 quote_use_cases: Arc::new(quote_use_cases),
180 local_exchange_use_cases: Arc::new(local_exchange_use_cases),
181 notice_use_cases: Arc::new(notice_use_cases),
182 organization_use_cases: Arc::new(organization_use_cases),
183 resource_booking_use_cases: Arc::new(resource_booking_use_cases),
184 shared_object_use_cases: Arc::new(shared_object_use_cases),
185 skill_use_cases: Arc::new(skill_use_cases),
186 stats_use_cases: Arc::new(stats_use_cases),
187 technical_inspection_use_cases: Arc::new(technical_inspection_use_cases),
188 work_report_use_cases: Arc::new(work_report_use_cases),
189 document_use_cases: Arc::new(document_use_cases),
190 energy_campaign_use_cases: Arc::new(energy_campaign_use_cases),
191 energy_bill_upload_use_cases: Arc::new(energy_bill_upload_use_cases),
192 etat_date_use_cases: Arc::new(etat_date_use_cases),
193 pcn_use_cases: Arc::new(pcn_use_cases),
194 payment_reminder_use_cases: Arc::new(payment_reminder_use_cases),
195 gdpr_art30_use_cases: Arc::new(gdpr_art30_use_cases),
196 gdpr_use_cases: Arc::new(gdpr_use_cases),
197 iot_use_cases: Arc::new(iot_use_cases),
198 linky_use_cases: Arc::new(linky_use_cases),
199 board_member_use_cases: Arc::new(board_member_use_cases),
200 board_decision_use_cases: Arc::new(board_decision_use_cases),
201 board_dashboard_use_cases: Arc::new(board_dashboard_use_cases),
202 dashboard_use_cases: Arc::new(dashboard_use_cases),
203 financial_report_use_cases: Arc::new(financial_report_use_cases),
204 owner_contribution_use_cases: Arc::new(owner_contribution_use_cases),
205 call_for_funds_use_cases: Arc::new(call_for_funds_use_cases),
206 journal_entry_use_cases: Arc::new(journal_entry_use_cases),
207 achievement_use_cases: Arc::new(achievement_use_cases),
208 challenge_use_cases: Arc::new(challenge_use_cases),
209 gamification_stats_use_cases: Arc::new(gamification_stats_use_cases),
210 ag_session_use_cases: Arc::new(ag_session_use_cases),
211 age_request_use_cases: Arc::new(age_request_use_cases),
212 contractor_report_use_cases: Arc::new(contractor_report_use_cases),
213 security_incident_use_cases: Arc::new(security_incident_use_cases),
214 service_provider_use_cases: Arc::new(service_provider_use_cases),
215 individual_member_use_cases: Arc::new(individual_member_use_cases),
216 consent_use_cases: Arc::new(consent_use_cases),
217 audit_logger: Arc::new(audit_logger),
218 email_service: Arc::new(email_service),
219 pool,
220 mqtt_energy_adapter,
221 boinc_use_cases: Arc::new(boinc_use_cases),
222 user_use_cases: Arc::new(user_use_cases),
223 }
224 }
225}