Coverage for functions \ flipdare \ manager \ service_manager.py: 59%
141 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
« prev ^ index » next coverage.py v7.13.0, created at 2026-05-08 12:22 +1000
1#!/usr/bin/env python
2# Copyright (c) 2026 Flipdare Pty Ltd. All rights reserved.
3#
4# This file is part of Flipdare's proprietary software and contains
5# confidential and copyrighted material. Unauthorised copying,
6# modification, distribution, or use of this file is strictly
7# prohibited without prior written permission from Flipdare Pty Ltd.
8#
9# This software includes third-party components licensed under MIT,
10# BSD, and Apache 2.0 licences. See THIRD_PARTY_NOTICES for details.
11#
13from __future__ import annotations
15from typing import TYPE_CHECKING
16from flipdare.core.singleton import Singleton
17from flipdare.service.payments.app_payment_service import AppPaymentService
18from flipdare.service.payments.risk_service import RiskService
19from flipdare.service.safety.moderation_service import ModerationService
20from flipdare.service.safety.reputation_service import ReputationService
21from flipdare.service.safety.restriction_service import RestrictionService
23if TYPE_CHECKING:
24 from flipdare.service.account_service import AccountService
25 from flipdare.service.external_account_service import ExternalAccountService
26 from flipdare.service.compliance_service import ComplianceService
27 from flipdare.service.content_service import ContentService
28 from flipdare.service.dare_service import DareService
29 from flipdare.service.flag_service import FlagService
30 from flipdare.service.friend_service import FriendService
31 from flipdare.service.group_service import GroupService
32 from flipdare.service.notification_service import NotificationService
33 from flipdare.service.pledge_service import PledgeService
34 from flipdare.service.search_service import SearchService
35 from flipdare.backend.exchange_rate_monitor import ExchangeRateMonitor
36 from flipdare.service.user_service import UserService
37 from flipdare.service.user_summary_service import UserSummaryService
39__all__ = ["ServiceManager"]
42class ServiceManager(Singleton):
44 def __init__(
45 self,
46 content_service: ContentService | None = None,
47 account_service: AccountService | None = None,
48 ext_account_service: ExternalAccountService | None = None,
49 friend_service: FriendService | None = None,
50 flag_service: FlagService | None = None,
51 group_service: GroupService | None = None,
52 pledge_service: PledgeService | None = None,
53 dare_service: DareService | None = None,
54 search_service: SearchService | None = None,
55 notification_service: NotificationService | None = None,
56 exchange_rate_monitor: ExchangeRateMonitor | None = None,
57 user_service: UserService | None = None,
58 summary_service: UserSummaryService | None = None,
59 compliance_service: ComplianceService | None = None,
60 restriction_service: RestrictionService | None = None,
61 reputation_service: ReputationService | None = None,
62 moderation_service: ModerationService | None = None,
63 risk_service: RiskService | None = None,
64 payment_service: AppPaymentService | None = None,
65 # internal
66 ) -> None:
67 super().__init__()
69 self._user_service = user_service
70 self._group_service = group_service
71 self._friend_service = friend_service
72 self._flag_service = flag_service
73 self._pledge_service = pledge_service
74 self._dare_service = dare_service
75 self._exchange_rate_monitor = exchange_rate_monitor
76 self._account_service = account_service
77 self._ext_account_service = ext_account_service
78 self._content_service = content_service
79 self._notification_service = notification_service
80 self._summary_service = summary_service
81 self._compliance_service = compliance_service
82 self._search_service = search_service
83 self._restriction_service = restriction_service
84 self._reputation_service = reputation_service
85 self._moderation_service = moderation_service
86 self._payment_service = payment_service
87 self._risk_service = risk_service
89 @property
90 def summary(self) -> UserSummaryService:
92 from flipdare.service.user_summary_service import UserSummaryService
94 if self._summary_service is None:
95 self._summary_service = UserSummaryService.instance()
96 return self._summary_service
98 @property
99 def group(self) -> GroupService:
101 from flipdare.service.group_service import GroupService
103 if self._group_service is None:
104 self._group_service = GroupService.instance()
105 return self._group_service
107 @property
108 def user(self) -> UserService:
110 from flipdare.service.user_service import UserService
112 if self._user_service is None:
113 self._user_service = UserService.instance()
114 return self._user_service
116 @property
117 def pledge(self) -> PledgeService:
119 from flipdare.service.pledge_service import PledgeService
121 if self._pledge_service is None:
122 self._pledge_service = PledgeService.instance()
123 return self._pledge_service
125 @property
126 def flag(self) -> FlagService:
128 from flipdare.service.flag_service import FlagService
130 if self._flag_service is None:
131 self._flag_service = FlagService.instance()
132 return self._flag_service
134 @property
135 def notification(self) -> NotificationService:
137 from flipdare.service.notification_service import NotificationService
139 if self._notification_service is None:
140 self._notification_service = NotificationService.instance()
141 return self._notification_service
143 @property
144 def dare(self) -> DareService:
145 from flipdare.service.dare_service import DareService
147 if self._dare_service is None:
148 self._dare_service = DareService.instance()
149 return self._dare_service
151 @property
152 def friend(self) -> FriendService:
153 from flipdare.service.friend_service import FriendService
155 if self._friend_service is None:
156 self._friend_service = FriendService.instance()
157 return self._friend_service
159 @property
160 def account(self) -> AccountService:
161 from flipdare.service.account_service import AccountService
163 if self._account_service is None:
164 self._account_service = AccountService.instance()
165 return self._account_service
167 @account.setter
168 def account(self, value: AccountService) -> None:
169 self._account_service = value
171 @property
172 def ext_account(self) -> ExternalAccountService:
173 from flipdare.service.external_account_service import ExternalAccountService
175 if self._ext_account_service is None:
176 self._ext_account_service = ExternalAccountService.instance()
177 return self._ext_account_service
179 @ext_account.setter
180 def ext_account(self, value: ExternalAccountService) -> None:
181 self._ext_account_service = value
183 @property
184 def content(self) -> ContentService:
186 from flipdare.service.content_service import ContentService
188 if self._content_service is None:
189 self._content_service = ContentService.instance()
190 return self._content_service
192 @property
193 def compliance(self) -> ComplianceService:
194 from flipdare.service.compliance_service import ComplianceService
196 if self._compliance_service is None:
197 self._compliance_service = ComplianceService.instance()
198 return self._compliance_service
200 @property
201 def search(self) -> SearchService:
202 from flipdare.service.search_service import SearchService
204 if self._search_service is None:
205 self._search_service = SearchService.instance()
206 return self._search_service
208 @property
209 def reputation(self) -> ReputationService:
210 if self._reputation_service is None:
211 self._reputation_service = ReputationService.instance()
212 return self._reputation_service
214 @property
215 def moderation(self) -> ModerationService:
216 if self._moderation_service is None:
217 self._moderation_service = ModerationService.instance()
218 return self._moderation_service
220 @property
221 def restriction(self) -> RestrictionService:
222 if self._restriction_service is None:
223 self._restriction_service = RestrictionService.instance()
224 return self._restriction_service
226 @property
227 def payment(self) -> AppPaymentService:
228 if self._payment_service is None:
229 self._payment_service = AppPaymentService.instance()
230 return self._payment_service
232 @property
233 def risk(self) -> RiskService:
234 if self._risk_service is None:
235 from flipdare.service.payments.risk_service import RiskService
237 self._risk_service = RiskService.instance()
238 return self._risk_service