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