Coverage for functions \ flipdare \ task \ cron_task_handler.py: 100%

54 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.service._service_provider import ServiceProvider 

17from flipdare.app_types import CronResult 

18from flipdare.generated.shared.backend.app_job_type import AppJobType 

19from flipdare.job_types import CronJobType 

20 

21if TYPE_CHECKING: 

22 from flipdare.manager.db_manager import DbManager 

23 from flipdare.manager.backend_manager import BackendManager 

24 from flipdare.manager.service_manager import ServiceManager 

25 

26 

27__all__ = ["CronTaskHandler"] 

28 

29 

30class CronTaskHandler(ServiceProvider): 

31 # NOTE: we need access to everything, so we defy the standard 

32 # NOTE: for a core admin class. 

33 def __init__( 

34 self, 

35 db_manager: DbManager | None = None, 

36 service_manager: ServiceManager | None = None, 

37 backend_manager: BackendManager | None = None, 

38 ) -> None: 

39 super().__init__( 

40 db_manager=db_manager, 

41 backend_manager=backend_manager, 

42 service_manager=service_manager, 

43 ) 

44 

45 def run_cron(self, job_type: CronJobType) -> CronResult: # noqa: PLR0912 

46 match job_type: 

47 case AppJobType.CR_USER_UNPROCESSED: 

48 return self.user_service.cron_user_unprocessed() 

49 case AppJobType.CR_USER_DAILY_SUMMARY: 

50 return self.user_service.cron_user_summary() 

51 case AppJobType.CR_USER_DECAY_REPUTATION: 

52 return self.reputation_service.cron_decay_reputation() 

53 # group 

54 case AppJobType.CR_GROUP_UNPROCESSED: 

55 return self.group_service.cron_group_unprocessed() 

56 case AppJobType.CR_GROUP_MEMBER_UNPROCESSED: 

57 return self.group_service.cron_group_member_unprocessed() 

58 case AppJobType.CR_GROUP_MEMBER_STATUS_UNPROCESSED: 

59 return self.group_service.cron_group_member_status_unprocessed() 

60 # common to user /group 

61 case AppJobType.CR_CONTENT_UNPROCESSED: 

62 return self.content_service.cron_content_unprocessed() 

63 # invite 

64 case AppJobType.CR_INVITE_UNPROCESSED: 

65 return self.friend_service.cron_invite_unprocessed() 

66 case AppJobType.CR_INVITE_REMINDER: 

67 return self.friend_service.cron_invite_reminder() 

68 # friend 

69 case AppJobType.CR_FRIEND_UNPROCESSED: 

70 return self.friend_service.cron_friend_unprocessed() 

71 # dare 

72 case AppJobType.CR_DARE_VOTE: 

73 return self.dare_service.cron_vote() 

74 case AppJobType.CR_DARE_UNPROCESSED: 

75 return self.dare_service.cron_dare_unprocessed() 

76 # flag 

77 case AppJobType.CR_FLAG_UNPROCESSED: 

78 return self.flag_service.cron_flag_unprocessed() 

79 # safety/restriction crons 

80 case AppJobType.CR_RESTRICT_EXPIRED: 

81 return self.restriction_service.cron_expired_restrictions() 

82 case AppJobType.CR_RESTRICT_INACTIVE: 

83 return self.restriction_service.cron_inactive_restrictions() 

84 # pledge/payment 

85 case AppJobType.CR_PAYMENT_UNPROCESSED: 

86 return self.payment_service.cron_payment_unprocessed() 

87 case AppJobType.CR_REFUND_UNPROCESSED: 

88 return self.payment_service.cron_refund_unprocessed() 

89 case AppJobType.CR_PAYMENT_REAUTHORIZE: 

90 return self.payment_service.cron_reauthorize_charge() 

91 case AppJobType.CR_PAYMENT_CAPTURE: 

92 return self.payment_service.cron_capture_charge() 

93 case AppJobType.CR_PAYMENT_TRANSFER: 

94 return self.payment_service.cron_transfer_charge() 

95 case AppJobType.CR_PAYMENT_REFUND: 

96 return self.payment_service.cron_refund_charge()