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

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# 

12 

13from __future__ import annotations 

14 

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 

22 

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 

38 

39__all__ = ["ServiceManager"] 

40 

41 

42class ServiceManager(Singleton): 

43 

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__() 

68 

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 

88 

89 @property 

90 def summary(self) -> UserSummaryService: 

91 

92 from flipdare.service.user_summary_service import UserSummaryService 

93 

94 if self._summary_service is None: 

95 self._summary_service = UserSummaryService.instance() 

96 return self._summary_service 

97 

98 @property 

99 def group(self) -> GroupService: 

100 

101 from flipdare.service.group_service import GroupService 

102 

103 if self._group_service is None: 

104 self._group_service = GroupService.instance() 

105 return self._group_service 

106 

107 @property 

108 def user(self) -> UserService: 

109 

110 from flipdare.service.user_service import UserService 

111 

112 if self._user_service is None: 

113 self._user_service = UserService.instance() 

114 return self._user_service 

115 

116 @property 

117 def pledge(self) -> PledgeService: 

118 

119 from flipdare.service.pledge_service import PledgeService 

120 

121 if self._pledge_service is None: 

122 self._pledge_service = PledgeService.instance() 

123 return self._pledge_service 

124 

125 @property 

126 def flag(self) -> FlagService: 

127 

128 from flipdare.service.flag_service import FlagService 

129 

130 if self._flag_service is None: 

131 self._flag_service = FlagService.instance() 

132 return self._flag_service 

133 

134 @property 

135 def notification(self) -> NotificationService: 

136 

137 from flipdare.service.notification_service import NotificationService 

138 

139 if self._notification_service is None: 

140 self._notification_service = NotificationService.instance() 

141 return self._notification_service 

142 

143 @property 

144 def dare(self) -> DareService: 

145 from flipdare.service.dare_service import DareService 

146 

147 if self._dare_service is None: 

148 self._dare_service = DareService.instance() 

149 return self._dare_service 

150 

151 @property 

152 def friend(self) -> FriendService: 

153 from flipdare.service.friend_service import FriendService 

154 

155 if self._friend_service is None: 

156 self._friend_service = FriendService.instance() 

157 return self._friend_service 

158 

159 @property 

160 def account(self) -> AccountService: 

161 from flipdare.service.account_service import AccountService 

162 

163 if self._account_service is None: 

164 self._account_service = AccountService.instance() 

165 return self._account_service 

166 

167 @account.setter 

168 def account(self, value: AccountService) -> None: 

169 self._account_service = value 

170 

171 @property 

172 def ext_account(self) -> ExternalAccountService: 

173 from flipdare.service.external_account_service import ExternalAccountService 

174 

175 if self._ext_account_service is None: 

176 self._ext_account_service = ExternalAccountService.instance() 

177 return self._ext_account_service 

178 

179 @ext_account.setter 

180 def ext_account(self, value: ExternalAccountService) -> None: 

181 self._ext_account_service = value 

182 

183 @property 

184 def content(self) -> ContentService: 

185 

186 from flipdare.service.content_service import ContentService 

187 

188 if self._content_service is None: 

189 self._content_service = ContentService.instance() 

190 return self._content_service 

191 

192 @property 

193 def compliance(self) -> ComplianceService: 

194 from flipdare.service.compliance_service import ComplianceService 

195 

196 if self._compliance_service is None: 

197 self._compliance_service = ComplianceService.instance() 

198 return self._compliance_service 

199 

200 @property 

201 def search(self) -> SearchService: 

202 from flipdare.service.search_service import SearchService 

203 

204 if self._search_service is None: 

205 self._search_service = SearchService.instance() 

206 return self._search_service 

207 

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 

213 

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 

219 

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 

225 

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 

231 

232 @property 

233 def risk(self) -> RiskService: 

234 if self._risk_service is None: 

235 from flipdare.service.payments.risk_service import RiskService 

236 

237 self._risk_service = RiskService.instance() 

238 return self._risk_service