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
« 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.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
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
27__all__ = ["CronTaskHandler"]
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 )
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()