from enum import Enum as _Enum
from typing import Any, Self
class Enum(str, _Enum):
@classmethod
def all(cls) -> list[Self]:
return [member.value for member in cls]
@classmethod
def get_member(cls, value: Any) -> Self:
for member in cls:
if member.value == value:
return member
raise AttributeError(f"Enum member {value} not found")
def __new__(cls, value: str, *args: Any) -> Self:
obj = str.__new__(cls, value)
obj._value_ = value
return obj
def __eq__(self, other: object) -> bool:
if isinstance(other, str):
return self.value == other
return super().__eq__(other)
def __hash__(self) -> int:
return hash(self.value)
def __str__(self) -> str:
return str(self.value)
def __repr__(self) -> str:
return str(self.value)
class PluginTypes(Enum):
ANALYTICS = 'ANALYTICS'
class SettingKeys(Enum):
ANALYTICS_UID = 'ANALYTICS_UID'
BOOONKER_DOMAIN = 'BOOONKER_DOMAIN'
BOOONKER_INTERNAL_DOMAIN = 'BOOONKER_INTERNAL_DOMAIN'
class SlackChannel(Enum):
BI_ALERTS = 'BI_ALERTS'
BI_NOTIFICATIONS = 'BI_NOTIFICATIONS'
RTP_ALERTS = 'RTP_ALERTS'
BI_SERVICE_NOTIFICATIONS = 'BI_SERVICE_NOTIFICATIONS'
PROMO_ALERTS = 'PROMO_ALERTS'
PROMO_NOTIFICATIONS = 'PROMO_NOTIFICATIONS'
FRAUD_ALERTS = 'FRAUD_ALERTS'
class JobStatus(Enum):
IDLE = 'IDLE'
IN_PROGRESS = 'IN_PROGRESS'
WAITING = 'WAITING'
FAILED = 'FAILED'
DONE = 'DONE'
INACTIVE = 'INACTIVE'
class JobDateTimeKey(Enum):
# common time mark
LAST_SUCCESS_AT = 'last_success_at'
UPLOADED_AT = 'uploaded_at'
CLEAN_AT = 'cleaned_at'
AGGREGATED_AT = 'aggregated_at'
NOTIFIED_AT = 'notified_at'
WILL_UPLOAD_AT = 'upload_at'
WILL_CLEAN_AT = 'clean_at'
WILL_AGGREGATE_AT = 'aggregate_at'
UPDATED_AT = 'updated_at'
class ProjectCollectStatus(Enum):
OK = 'OK'
ERROR = 'ERROR'
SKIPPED = 'SKIPPED'
EMPTY = 'EMPTY'
class PipelineStatus(Enum):
NEW = 'NEW'
ACTIVE = 'ACTIVE'
SUCCESS = 'SUCCESS'
FAILED = 'FAILED'
class JobName(Enum):
UPLOAD_PROVIDER_PLAYERS_TO_S3 = 'UPLOAD_PROVIDER_PLAYERS_TO_S3'
TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_POSTPROCESS = (
'TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_POSTPROCESS'
)
TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_REPORT_FULL = (
'TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_REPORT_FULL'
)
TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_REPORT_WINNERS = (
'TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_REPORT_WINNERS'
)
TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_REPORT_MINUTELY = (
'TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT_REPORT_MINUTELY'
)
TIME_PSEUDO_PROGRESSIVE_JACKPOT_POSTPROCESS = 'TIME_PSEUDO_PROGRESSIVE_JACKPOT_POSTPROCESS'
TIME_PSEUDO_PROGRESSIVE_JACKPOT_REPORT_FULL = 'TIME_PSEUDO_PROGRESSIVE_JACKPOT_REPORT_FULL'
TIME_PSEUDO_PROGRESSIVE_JACKPOT_REPORT_WINNERS = (
'TIME_PSEUDO_PROGRESSIVE_JACKPOT_REPORT_WINNERS'
)
TIME_PSEUDO_PROGRESSIVE_JACKPOT_REPORT_MINUTELY = (
'TIME_PSEUDO_PROGRESSIVE_JACKPOT_REPORT_MINUTELY'
)
TIME_FIXED_JACKPOT_POSTPROCESS = 'TIME_FIXED_JACKPOT_POSTPROCESS'
TIME_FIXED_JACKPOT_REPORT_FULL = 'TIME_FIXED_JACKPOT_REPORT_FULL'
TIME_FIXED_JACKPOT_REPORT_WINNERS = 'TIME_FIXED_JACKPOT_REPORT_WINNERS'
TIME_FIXED_JACKPOT_REPORT_MINUTELY = 'TIME_FIXED_JACKPOT_REPORT_MINUTELY'
TIME_PROGRESSIVE_JACKPOT_POSTPROCESS = 'TIME_PROGRESSIVE_JACKPOT_POSTPROCESS'
TIME_PROGRESSIVE_JACKPOT_REPORT_FULL = 'TIME_PROGRESSIVE_JACKPOT_REPORT_FULL'
TIME_PROGRESSIVE_JACKPOT_REPORT_WINNERS = 'TIME_PROGRESSIVE_JACKPOT_REPORT_WINNERS'
TIME_PROGRESSIVE_JACKPOT_REPORT_MINUTELY = 'TIME_PROGRESSIVE_JACKPOT_REPORT_MINUTELY'
PROVIDER_ALERT_BIGWIN = 'PROVIDER_ALERT_BIGWIN'
ATHENA_AGG_PROVIDER__SAS_RETENTION = 'ATHENA_AGG_PROVIDER__SAS_RETENTION'
AGG_BIGWINS = 'AGG_BIGWINS'
AGG_FLIP_TO_WIN_IMPACT = 'AGG_FLIP_TO_WIN_IMPACT'
PROVIDER_AGG_PLAYERS = 'PROVIDER_AGG_PLAYERS'
AGG_PROVIDER_FINANCES_HLL_DAILY = 'AGG_PROVIDER_FINANCES_HLL_DAILY'
AGG_RTP = 'AGG_RTP'
AGG_FRAUD_DETECT = 'AGG_FRAUD_DETECT'
ALERT_FRAUD_DETECT_PROJECT = 'ALERT_FRAUD_DETECT_PROJECT'
CLEAR_FRAUD_DETECT_HISTORY = 'CLEAR_FRAUD_DETECT_HISTORY'
ALERT_FRAUD_DETECT_GAME = 'ALERT_FRAUD_DETECT_GAME'
AGG_GAME_RANKS = 'AGG_GAME_RANKS'
ALERT_COLLECT_ACTION_STATE = 'ALERT_COLLECT_ACTION_STATE'
ALERT_HEALTH = 'ALERT_HEALTH'
ALERT_RTP = 'ALERT_RTP'
ATHENA_AGG_EVENTS_MINUTELY = 'ATHENA_AGG_EVENTS_MINUTELY'
ATHENA_AGG_ROUNDS_MINUTELY = 'ATHENA_AGG_ROUNDS_MINUTELY'
ATHENA_AGG_PROVIDER_GAME_KPI25 = 'ATHENA_AGG_PROVIDER_GAME_KPI25'
AGG_PROVIDER_GAME_KPI25_V2 = 'AGG_PROVIDER_GAME_KPI25_V2'
ATHENA_TABLE_PROMO_ROUNDS_FROM_HYPER_SNS_PROD_S3 = (
'ATHENA_TABLE_PROMO_ROUNDS_FROM_HYPER_SNS_PROD_S3'
)
ATHENA_TABLE_PROMO_ROUNDS_FROM_HYPER_SNS = 'ATHENA_TABLE_PROMO_ROUNDS_FROM_HYPER_SNS'
ATHENA_TABLE_PROVIDER_RAW_FINANCES_STATS_MONTHLY = (
'ATHENA_TABLE_PROVIDER_RAW_FINANCES_STATS_MONTHLY'
)
ATHENA_TABLE_PROVIDER_AWARDS = 'ATHENA_TABLE_PROVIDER_AWARDS'
ATHENA_TABLE_PROVIDER_FREEBETS = 'ATHENA_TABLE_PROVIDER_FREEBETS'
AWARDS_LOADER = 'AWARDS_LOADER'
CELERY_HEALTH_CHECK = 'CELERY_HEALTH_CHECK'
CLEAN_POSTGRES = 'CLEAN_POSTGRES'
COMMON_GET_PROJECTS_MAPPING = 'COMMON_GET_PROJECTS_MAPPING'
DATA_MIGRATION_TASK = 'DATA_MIGRATION_TASK'
DATA_MIGRATION = 'DATA_MIGRATION'
FREEBETS_LOADER = 'FREEBETS_LOADER'
GET_COMMON__CURRENCIES_SETTINGS = 'GET_COMMON__CURRENCIES_SETTINGS'
GET_COMMON__MARKETS = 'GET_COMMON__MARKETS'
GET_COMMON_EX_RATES = 'GET_COMMON_EX_RATES'
GET_COMMON_PROJECT_MAPPING = 'GET_PROJECT_MAPPING'
GET_GAMES_POSITIONS = 'GET_GAMES_POSITIONS'
GET_PLATFORM_FINSTATS = 'GET_PLATFORM_FINSTATS'
GET_PLATFORM_PROJECT_FINSTATS = 'GET_PLATFORM_PROJECT_FINSTATS'
GET_PLATFORM_PROJECTS = 'GET_PLATFORM_PROJECTS'
GET_PLATFORM_GAMES = 'GET_PLATFORM_GAMES'
PROMO_CAMPAIGN_EVENTS_AGG_DAILY = 'PROMO_CAMPAIGN_EVENTS_AGG_DAILY'
PROMO_CAMPAIGN_EVENTS_AGG_HOURLY = 'PROMO_CAMPAIGN_EVENTS_AGG_HOURLY'
PROMO_EVENTS_AGG_DAILY = 'PROMO_EVENTS_AGG_DAILY'
PROMO_EVENTS_AGG_HOURLY = 'PROMO_EVENTS_AGG_HOURLY'
PROMO_GET_CAMPAIGNS = 'PROMO_GET_CAMPAIGNS'
PROMO_GET_GIFTS = 'PROMO_GET_GIFTS'
PROVIDER_PROMO_GET_HYPERS = 'PROVIDER_PROMO_GET_HYPERS'
PLATFORM_PROMO_GET_HYPERS = 'PLATFORM_PROMO_GET_HYPERS'
PROMO_GET_PLAYERS = 'PROMO_GET_PLAYERS'
PROMO_ROUNDS_AGG_DAILY = 'PROMO_ROUNDS_AGG_DAILY'
PROMO_ROUNDS_AGG_HOURLY = 'PROMO_ROUNDS_AGG_HOURLY'
PROMO_UPDATE_CAMPAIGNS = 'PROMO_UPDATE_CAMPAIGNS'
PROMO_UPDATE_CAMPAIGNS_RATES = 'PROMO_UPDATE_CAMPAIGNS_RATES'
PROMO_UPLOAD_GIFTS_TO_S3 = 'PROMO_UPLOAD_GIFTS_TO_S3'
PROVIDER_AGG_FINDAILY = 'PROVIDER_AGG_FINDAILY'
PROVIDER_AGG_FINDAILY_TMP = 'PROVIDER_AGG_FINDAILY_TMP'
PROVIDER_ATHENA_FINANCE_BY_SESSIONS_AGG = 'PROVIDER_ATHENA_FINANCE_BY_SESSIONS_AGG'
PROVIDER_GET_FIN_DAILY = 'PROVIDER_GET_FIN_DAILY'
PROVIDER_GET_PROJECTS = 'PROVIDER_GET_PROJECTS'
PROVIDER_GET_TESTPLAYERS = 'PROVIDER_GET_TESTPLAYERS'
RE_UPLOAD_FAILED_FIREHOSE_ACTIONS = 'RE_UPLOAD_FAILED_FIREHOSE_DATA:actions'
RE_UPLOAD_FAILED_FIREHOSE_SESSIONS = 'RE_UPLOAD_FAILED_SESSIONS_FIREHOSE_DATA:sessions'
UPLOAD_AWARDS_TO_FIREHOSE = 'UPLOAD_AWARDS_TO_FIREHOSE'
UPLOAD_COMMON_CURRENCIES_SETTINGS_TO_S3 = 'UPLOAD_COMMON_CURRENCIES_SETTINGS_TO_S3'
UPLOAD_COMMON_MARKETS_TO_S3 = 'UPLOAD_COMMON_MARKETS_TO_S3'
UPLOAD_COMMON_EX_RATES_TO_S3 = 'UPLOAD_COMMON_EX_RATES_TO_S3'
UPLOAD_COMMON_PROJECT_MAPPING_TO_S3 = 'UPLOAD_COMMON_PROJECT_MAPPING_TO_S3'
UPLOAD_FREEBETS_TO_FIREHOSE = 'UPLOAD_FREEBETS_TO_FIREHOSE'
UPLOAD_PLATFORM_FINANCES_TO_FIREHOSE = 'UPLOAD_PLATFORM_FINANCES_TO_FIREHOSE'
UPLOAD_PLATFORM_PROJECT_STATS_TO_FIREHOSE = 'UPLOAD_PLATFORM_PROJECT_STATS_TO_FIREHOSE'
UPLOAD_PLATFORM_STATS_TO_FIREHOSE = 'UPLOAD_PLATFORM_STATS_TO_FIREHOSE'
UPLOAD_PLATFORM_GAMES_TO_S3 = 'UPLOAD_PLATFORM_GAMES_TO_S3'
UPLOAD_PROMO_CAMPAIGNS = 'UPLOAD_PROMO_CAMPAIGNS'
UPLOAD_PROMO_CURRENCY_RATES = 'UPLOAD_PROMO_CURRENCY_RATES'
UPLOAD_PROMO_GIFTS = 'UPLOAD_PROMO_GIFTS'
UPLOAD_PROMO_GLOBAL_EVENTS = 'UPLOAD_PROMO_GLOBAL_EVENTS'
UPLOAD_PROMO_PLAYERS = 'UPLOAD_PROMO_PLAYERS'
PROMO_UPLOAD_FINAL_REPORTS = 'PROMO_UPLOAD_FINAL_REPORTS'
PROMO_UPLOAD_MINUTELY_REPORTS = 'PROMO_UPLOAD_MINUTELY_REPORTS'
PROMO_AGG_PERFORMANCE_COMPARISON = 'PROMO_AGG_PERFORMANCE_COMPARISON'
UPLOAD_PROVIDER_FINANCES_TO_S3 = 'UPLOAD_PROVIDER_FINANCES_TO_S3'
UPLOAD_PROVIDER_GAMES_TO_S3 = 'UPLOAD_PROVIDER_GAMES_TO_S3'
UPLOAD_PROVIDER_GAME_KPI25_REPORT_V2 = 'UPLOAD_PROVIDER_GAME_KPI25_REPORT_V2'
UPLOAD_PROVIDER_GEOTAGS_TO_S3 = 'UPLOAD_PROVIDER_GEOTAGS_TO_S3'
UPLOAD_PROVIDER_PROJECTS_TO_S3 = 'UPLOAD_PROVIDER_PROJECTS_TO_S3'
UPLOAD_PROVIDER_TESTPLAYERS_TO_S3 = 'UPLOAD_PROVIDER_TESTPLAYERS_TO_S3'
AGG_PROVIDER__SAS_RETENTION = 'AGG_PROVIDER__SAS_RETENTION'
AGG_PROMO_EVENTS_S3_FILES_METADATA = 'AGG_PROMO_EVENTS_S3_FILES_METADATA'
AGG_PROMO_ROUNDS_S3_FILES_METADATA = 'AGG_PROMO_ROUNDS_S3_FILES_METADATA'
ALERT_PROMO_S3_FILES_DELAY = 'ALERT_PROMO_S3_FILES_DELAY'
RESET_CORRUPTED_PROMO_AGGREGATIONS = 'RESET_CORRUPTED_PROMO_AGGREGATIONS'
GET_PROVIDER_GAMES = 'GET_PROVIDER_GAMES'
CELERY_CLEAR_LOCKS = 'CELERY_CLEAR_LOCKS'
PROMO_CAMPAIGN_REPORTS_MINUTELY = 'PROMO_CAMPAIGN_REPORTS_MINUTELY'
PROMO_CAMPAIGN_REPORTS_HOURLY = 'PROMO_CAMPAIGN_REPORTS_HOURLY'
PROMO_CAMPAIGN_REPORTS_DAILY = 'PROMO_CAMPAIGN_REPORTS_DAILY'
PROMO_CAMPAIGN_REPORTS_FULL = 'PROMO_CAMPAIGN_REPORTS_FULL'
PROMO_CAMPAIGN_REPORTS_WINNERS = 'PROMO_CAMPAIGN_REPORTS_WINNERS'
TOURNAMENT_REPORT_MINUTELY = 'TOURNAMENT_REPORT_MINUTELY'
TOURNAMENT_REPORT_HOURLY = 'TOURNAMENT_REPORT_HOURLY'
TOURNAMENT_REPORT_DAILY = 'TOURNAMENT_REPORT_DAILY'
TOURNAMENT_REPORT_FULL = 'TOURNAMENT_REPORT_FULL'
SERIES_TOURNAMENT_REPORT_MINUTELY = 'SERIES_TOURNAMENT_REPORT_MINUTELY'
SERIES_TOURNAMENT_REPORT_HOURLY = 'SERIES_TOURNAMENT_REPORT_HOURLY'
SERIES_TOURNAMENT_REPORT_DAILY = 'SERIES_TOURNAMENT_REPORT_DAILY'
SERIES_TOURNAMENT_REPORT_FULL = 'SERIES_TOURNAMENT_REPORT_FULL'
DAILY_REWARD_REPORT_MINUTELY = 'DAILY_REWARD_REPORT_MINUTELY'
DAILY_REWARD_REPORT_HOURLY = 'DAILY_REWARD_REPORT_HOURLY'
DAILY_REWARD_REPORT_DAILY = 'DAILY_REWARD_REPORT_DAILY'
DAILY_REWARD_REPORT_FULL = 'DAILY_REWARD_REPORT_FULL'
DAILY_REWARD_REPORT_WINNERS = 'DAILY_REWARD_REPORT_WINNERS'
JACKPOTS_REPORT_MINUTELY = 'JACKPOTS_REPORT_MINUTELY'
JACKPOTS_REPORT_HOURLY = 'JACKPOTS_REPORT_HOURLY'
JACKPOTS_REPORT_DAILY = 'JACKPOTS_REPORT_DAILY'
JACKPOTS_REPORT_FULL = 'JACKPOTS_REPORT_FULL'
CLASSIC_JACKPOT_REPORT_MINUTELY = 'CLASSIC_JACKPOT_REPORT_MINUTELY'
CLASSIC_JACKPOT_REPORT_HOURLY = 'CLASSIC_JACKPOT_REPORT_HOURLY'
CLASSIC_JACKPOT_REPORT_DAILY = 'CLASSIC_JACKPOT_REPORT_DAILY'
CLASSIC_JACKPOT_REPORT_FULL = 'CLASSIC_JACKPOT_REPORT_FULL'
CLASSIC_JACKPOT_REPORT_WINNERS = 'CLASSIC_JACKPOT_REPORT_WINNERS'
MUST_DROP_JACKPOT_REPORT_MINUTELY = 'MUST_DROP_JACKPOT_REPORT_MINUTELY'
MUST_DROP_JACKPOT_REPORT_HOURLY = 'MUST_DROP_JACKPOT_REPORT_HOURLY'
MUST_DROP_JACKPOT_REPORT_DAILY = 'MUST_DROP_JACKPOT_REPORT_DAILY'
MUST_DROP_JACKPOT_REPORT_FULL = 'MUST_DROP_JACKPOT_REPORT_FULL'
MUST_DROP_JACKPOT_REPORT_WINNERS = 'MUST_DROP_JACKPOT_REPORT_WINNERS'
SERIES_REPORT_MINUTELY = 'SERIES_REPORT_MINUTELY'
SERIES_REPORT_HOURLY = 'SERIES_REPORT_HOURLY'
SERIES_REPORT_DAILY = 'SERIES_REPORT_DAILY'
SERIES_REPORT_FULL = 'SERIES_REPORT_FULL'
PRIZE_DROP_REPORT_MINUTELY = 'PRIZE_DROP_REPORT_MINUTELY'
PRIZE_DROP_REPORT_HOURLY = 'PRIZE_DROP_REPORT_HOURLY'
PRIZE_DROP_REPORT_DAILY = 'PRIZE_DROP_REPORT_DAILY'
PRIZE_DROP_REPORT_FULL = 'PRIZE_DROP_REPORT_FULL'
PRIZE_DROP_REPORT_WINNERS = 'PRIZE_DROP_REPORT_WINNERS'
FLIP_TO_WIN_REPORT_MINUTELY = 'FLIP_TO_WIN_REPORT_MINUTELY'
FLIP_TO_WIN_REPORT_HOURLY = 'FLIP_TO_WIN_REPORT_HOURLY'
FLIP_TO_WIN_REPORT_DAILY = 'FLIP_TO_WIN_REPORT_DAILY'
FLIP_TO_WIN_REPORT_FULL = 'FLIP_TO_WIN_REPORT_FULL'
FLIP_TO_WIN_REPORT_WINNERS = 'FLIP_TO_WIN_REPORT_WINNERS'
PROMO_CAMPAIGNS_POSTPROCESS = 'PROMO_CAMPAIGNS_POSTPROCESS'
TOURNAMENT_POSTPROCESS = 'TOURNAMENT_POSTPROCESS'
SERIES_TOURNAMENT_POSTPROCESS = 'SERIES_TOURNAMENT_POSTPROCESS'
SERIES_POSTPROCESS = 'SERIES_POSTPROCESS'
DAILY_REWARD_POSTPROCESS = 'DAILY_REWARD_POSTPROCESS'
JACKPOTS_POSTPROCESS = 'JACKPOTS_POSTPROCESS'
CLASSIC_JACKPOT_POSTPROCESS = 'CLASSIC_JACKPOT_POSTPROCESS'
MUST_DROP_JACKPOT_POSTPROCESS = 'MUST_DROP_JACKPOT_POSTPROCESS'
TIME_JACKPOT_POSTPROCESS = 'TIME_JACKPOT_POSTPROCESS'
PRIZE_DROP_POSTPROCESS = 'PRIZE_DROP_POSTPROCESS'
FLIP_TO_WIN_POSTPROCESS = 'FLIP_TO_WIN_FINALIZE'
PROMO_FINAL_REPORTS_CHECKER = 'PROMO_FINAL_REPORTS_CHECKER'
ATHENA_AGG_PROVIDER_PLAYERS_REG_AT = 'ATHENA_AGG_PROVIDER_PLAYERS_REG_AT'
ATHENA_AGG_PROVIDER_ACTIONS_METADATA = 'ATHENA_AGG_PROVIDER_ACTIONS_METADATA'
ATHENA_AGG_PROVIDER_BUY_BONUS_GAMES = 'ATHENA_AGG_PROVIDER_BUY_BONUS_GAMES'
CHECK_AGG_PROVIDER_BUY_BONUS_GAMES = 'CHECK_AGG_PROVIDER_BUY_BONUS_GAMES'
AGG_PROVIDER_SESSIONS_S3_HOURLY_COUNT = 'AGG_PROVIDER_SESSIONS_S3_HOURLY_COUNT'
GET_PROVIDER_AWARDS = 'GET_PROVIDER_AWARDS'
GET_PROVIDER_FREEBETS = 'GET_PROVIDER_FREEBETS'
UPLOAD_PROVIDER_AWARDS_TO_S3 = 'UPLOAD_PROVIDER_AWARDS_TO_S3'
UPLOAD_PROVIDER_FREEBETS_TO_S3 = 'UPLOAD_PROVIDER_FREEBETS_TO_S3'
# ---- PROMO -----
class FreebetTypes(Enum):
FIXED = 'fixed'
FLEXIBLE = 'flexible'
FEATURE_FREESPINS = 'feature_freespins'
FEATURE_BONUS = 'feature_bonus'
class AwardPrizeTypes(Enum):
MONEY = 'MONEY'
CUSTOM = 'CUSTOM'
PROGRESSIVE = 'PROGRESSIVE'
class FreebetPrizeTypes(Enum):
FREEBET = 'FREEBET'
class APIPromoCampaignActions(Enum):
WINNERS_REPORT = 'winners_report'
FULL_REPORT = 'full_report'
FINANCE_REPORT = 'finance_report'
FINANCE_TOTALS = 'finance_totals'
class PromoCampaignTypes(Enum):
TOURNAMENT = 'tournament'
SERIES_TOURNAMENT = 'series_tournament'
DAILY_REWARD = 'daily_reward'
JACKPOTS = 'jackpots'
CLASSIC_JACKPOT = 'classic_jackpot'
MUST_DROP_JACKPOT = 'must_drop_jackpot'
SERIES = 'series'
PRIZE_DROP = 'prize_drop'
FLIP_TO_WIN = 'flip_to_win'
TIME_JACKPOT = 'time_jackpot' # todo delete
TIME_FIXED_JACKPOT = 'time_fixed_jackpot'
TIME_PROGRESSIVE_JACKPOT = 'time_progressive_jackpot'
TIME_PSEUDO_PROGRESSIVE_JACKPOT = 'time_pseudo_progressive_jackpot'
TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT = 'time_pseudo_progressive_must_drop_jackpot'
@classmethod
def container_types(cls) -> tuple['PromoCampaignTypes', ...]:
return cls.SERIES, cls.JACKPOTS
@classmethod
def has_parent(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.SERIES_TOURNAMENT,
cls.CLASSIC_JACKPOT,
cls.MUST_DROP_JACKPOT,
cls.TIME_FIXED_JACKPOT,
cls.TIME_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT,
)
@classmethod
def searchable_player_types(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.TOURNAMENT,
cls.SERIES,
cls.SERIES_TOURNAMENT,
cls.DAILY_REWARD,
)
@classmethod
def collectable_types(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.TOURNAMENT,
cls.DAILY_REWARD,
cls.JACKPOTS,
cls.SERIES,
cls.PRIZE_DROP,
cls.FLIP_TO_WIN,
)
@classmethod
def jackpot_types(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.JACKPOTS,
cls.CLASSIC_JACKPOT,
cls.MUST_DROP_JACKPOT,
cls.TIME_FIXED_JACKPOT,
cls.TIME_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT,
)
@classmethod
def children_jackpot_types(cls) -> tuple['PromoCampaignTypes', ...]:
return tuple(
jackpot_type for jackpot_type in cls.jackpot_types() if jackpot_type != cls.JACKPOTS
)
@classmethod
def use_parent_currency(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.CLASSIC_JACKPOT,
cls.MUST_DROP_JACKPOT,
cls.TIME_FIXED_JACKPOT,
cls.TIME_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT,
)
@classmethod
def post_processing_gifts_collect_types(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.TOURNAMENT,
cls.SERIES,
cls.SERIES_TOURNAMENT,
)
@classmethod
def has_minutely_report(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.TOURNAMENT,
cls.SERIES_TOURNAMENT,
cls.DAILY_REWARD,
cls.JACKPOTS,
cls.CLASSIC_JACKPOT,
cls.TIME_FIXED_JACKPOT,
cls.TIME_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT,
cls.MUST_DROP_JACKPOT,
cls.SERIES,
cls.PRIZE_DROP,
cls.FLIP_TO_WIN,
)
@classmethod
def has_full_report(cls) -> tuple['PromoCampaignTypes', ...]:
return cls.has_minutely_report()
@classmethod
def has_winners_report(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.DAILY_REWARD,
cls.CLASSIC_JACKPOT,
cls.TIME_FIXED_JACKPOT,
cls.TIME_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT,
cls.MUST_DROP_JACKPOT,
cls.PRIZE_DROP,
cls.FLIP_TO_WIN,
)
@classmethod
def has_event_minutely_aggregation(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.TOURNAMENT,
cls.SERIES_TOURNAMENT,
cls.DAILY_REWARD,
cls.CLASSIC_JACKPOT,
cls.MUST_DROP_JACKPOT,
cls.SERIES,
cls.PRIZE_DROP,
cls.FLIP_TO_WIN,
cls.TIME_FIXED_JACKPOT,
cls.TIME_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_JACKPOT,
cls.TIME_PSEUDO_PROGRESSIVE_MUST_DROP_JACKPOT,
)
@classmethod
def has_round_minutely_aggregation(cls) -> tuple['PromoCampaignTypes', ...]:
return (
cls.TOURNAMENT,
cls.DAILY_REWARD,
cls.JACKPOTS,
cls.SERIES,
cls.PRIZE_DROP,
cls.FLIP_TO_WIN,
)
class PromoCampaignStatuses(Enum):
# https://docs.python.org/3/library/enum.html
UNPUBLISHED = 'UNPUBLISHED'
NEW = 'NEW'
PRE_NOTIFICATION = 'PRE_NOTIFICATION'
STARTED = 'STARTED'
PENDING = 'PENDING'
EXPIRED = 'EXPIRED'
POST_PROCESSING = 'POST_PROCESSING'
FINISHED = 'FINISHED'
POST_NOTIFICATION = 'POST_NOTIFICATION'
DELETED = 'DELETED'
@classmethod
def active_statuses(cls) -> tuple['PromoCampaignStatuses', ...]:
return (
cls.STARTED,
cls.PENDING,
cls.EXPIRED,
cls.POST_PROCESSING,
cls.FINISHED,
cls.POST_NOTIFICATION,
)
@classmethod
def not_active_statuses(cls) -> tuple['PromoCampaignStatuses', ...]:
return (
cls.UNPUBLISHED,
cls.PRE_NOTIFICATION,
cls.DELETED,
)
@classmethod
def post_processing_statuses(cls) -> tuple['PromoCampaignStatuses', ...]:
return (
cls.POST_NOTIFICATION,
cls.FINISHED,
)
class PlatformFilterConditions(Enum):
OPERATOR_UID = 'operator_uid'
BRAND = 'brand'
OP_PLAYER_PREFIX = 'op_player_prefix'
OP_PLAYER_BODY = 'op_player_body'
OP_PLAYER_SUFFIX = 'op_player_suffix'
class EntityTypes(Enum):
ACTION = 'ACTION'
ROUND = 'ROUND'
class EventTypes(Enum):
ACTION = 'ACTION'
ROUND = 'ROUND'
class TrackerEvents(Enum):
# Daily Reward Events
GOAL_FINISHED = 'GOAL_FINISHED'
STEP_FINISHED = 'STEP_FINISHED'
PRIZE_CLAIMED = 'PRIZE_CLAIMED'
JACKPOT_WIN = 'JACKPOT_WIN'
PRIZE_DROP = 'PRIZE_DROP'
class ReportTypes(Enum):
MINUTELY = 'MINUTELY'
FULL = 'FULL'
WINNERS = 'WINNERS'
class FullReportTables(Enum):
PROMO__TOURNAMENT_REPORT = 'promo__tournament_report'
PROMO__SERIES_TOURNAMENT_REPORT = 'promo__series_tournament_report'
PROMO__DAILY_REWARD_REPORT = 'promo__daily_reward_report'
PROMO__JACKPOT_REPORT = 'promo__jackpot_report'
PROMO__SERIES_REPORT = 'promo__series_report'
PROMO__PRIZE_DROP_REPORT = 'promo__prize_drop_report'
PROMO__FLIP_TO_WIN_REPORT = 'promo__flip_to_win_report'
@classmethod
def get_table_name_by_campaign_type(
cls, campaign_type: PromoCampaignTypes
) -> 'FullReportTables':
if campaign_type == PromoCampaignTypes.TOURNAMENT:
return cls.PROMO__TOURNAMENT_REPORT
elif campaign_type == PromoCampaignTypes.SERIES_TOURNAMENT:
return cls.PROMO__SERIES_TOURNAMENT_REPORT
elif campaign_type == PromoCampaignTypes.DAILY_REWARD:
return cls.PROMO__DAILY_REWARD_REPORT
elif campaign_type in PromoCampaignTypes.jackpot_types():
return cls.PROMO__JACKPOT_REPORT
elif campaign_type == PromoCampaignTypes.SERIES:
return cls.PROMO__SERIES_REPORT
elif campaign_type == PromoCampaignTypes.PRIZE_DROP:
return cls.PROMO__PRIZE_DROP_REPORT
elif campaign_type == PromoCampaignTypes.FLIP_TO_WIN:
return cls.PROMO__FLIP_TO_WIN_REPORT
else:
raise NotImplementedError()
class PromoEntitiesToCollect(Enum):
GLOBAL_EVENT = 'GLOBAL_EVENT'
GIFT = 'GIFT'
PLAYER = 'PLAYER'
@classmethod
def postprocess_requires(cls) -> tuple['PromoEntitiesToCollect', ...]:
return (cls.GIFT, cls.PLAYER)
class PromoEntitiesToAggregate(Enum):
# TODO delete
ROUND = 'ROUND'
EVENT = 'EVENT'
class BooonkerPromoReportApiCurrencies(Enum):
EUR = 'EUR'
class PromoUploadStatuses(Enum):
STARTED = 'STARTED'
DONE = 'DONE'
class PromoEventTypes(Enum):
TOURNAMENT_INCREMENT_SCORE = 'TOURNAMENT_INCREMENT_SCORE'
SERIES_INCREMENT_SCORE = 'SERIES_INCREMENT_SCORE'
TOURNAMENT_HIGH_SCORE = 'TOURNAMENT_HIGH_SCORE'
DAILY_REWARD_SCORED_STANDARD = 'DAILY_REWARD_SCORED_STANDARD'
DAILY_REWARD_SCORED_EXPERT = 'DAILY_REWARD_SCORED_EXPERT'
DAILY_REWARD_SCORED_HIGH_ROLLER = 'DAILY_REWARD_SCORED_HIGH_ROLLER'
DAILY_REWARD_CLAIMED_STANDARD = 'DAILY_REWARD_CLAIMED_STANDARD'
DAILY_REWARD_CLAIMED_EXPERT = 'DAILY_REWARD_CLAIMED_EXPERT'
DAILY_REWARD_CLAIMED_HIGH_ROLLER = 'DAILY_REWARD_CLAIMED_HIGH_ROLLER'
JACKPOT_WIN = 'JACKPOT_WIN'
PRIZE_DROP = 'PRIZE_DROP'
FLIP = 'FLIP'
class BooonkerPlayerParticipantCampaignStatuses:
ACTIVE: tuple[PromoCampaignStatuses, ...] = (
PromoCampaignStatuses.STARTED,
PromoCampaignStatuses.POST_PROCESSING,
PromoCampaignStatuses.EXPIRED,
PromoCampaignStatuses.POST_NOTIFICATION,
)
ENDED: tuple[PromoCampaignStatuses, ...] = (
PromoCampaignStatuses.FINISHED,
PromoCampaignStatuses.DELETED,
)
ALL: tuple[PromoCampaignStatuses, ...] = ACTIVE + ENDED
@classmethod
def get_statuses(cls, name: str | None) -> list[str]:
if not name:
return [str(x) for x in cls.ALL]
return [str(x) for x in getattr(cls, name)]
@classmethod
def choices(cls) -> list[str]:
res = [str(m) for m in PromoCampaignStatuses.all()]
res.append('ENDED')
res.append('ACTIVE')
return res
class ProviderMetrics(Enum):
GET_PROVIDER_FINANCES_DAILY = 'GET_PROVIDER_FINANCES_DAILY'
AGG_PROVIDER_FINANCES_DAILY = 'AGG_PROVIDER_FINANCES_DAILY'
CACHED = 'CACHED'
class AwsProfilesList(Enum):
FIREHOSE_ANALYTICS_INTERNAL = 'firehose-analytics-internal'
ATHENA_ANALYTICS_INTERNAL = 'athena-analytics-internal'
PRODUCTION_DELETE_S3_ROLE = 'production-delete-s3-role'
PROD_ATHENA = 'prod-athena'
class FirehoseStreams(Enum):
PROVIDER_FINANCE_DAILY = 'finance-daily'
PROVIDER_ACTIONS = 'actions'
PROVIDER_SESSIONS = 'sessions'
PROVIDER_AWARDS = 'awards'
PROVIDER_FREEBETS = 'freebets'
PLATFORM_STATS = 'platform-stats'
class FirehoseErrorTypes(Enum):
ACTIVE_PARTITION_COUNT_EXCEEDED = 'active-partition-count-exceeded'
METADATA_EXTRACTION_FAILED = 'metadata-extraction-failed'
PARTITIONING_FAILED = 'partitioning-failed'
FORMAT_CONVERSION_FAILED = 'format-conversion-failed'
class FirehoseReUploadEntities(Enum):
PROVIDER_ACTIONS = 'actions'
PROVIDER_SESSIONS = 'sessions'
@classmethod
def get_filename_pattern(cls, entity: str) -> str:
if entity == cls.PROVIDER_ACTIONS:
return r'sns-firehose-\w+-betman-actions'
elif entity == cls.PROVIDER_SESSIONS:
return r'sns-firehose-\w+-betman-sessions'
else:
raise NotImplementedError()
@classmethod
def get_s3_source_name(cls, entity: str) -> 'S3SourceName':
if entity == cls.PROVIDER_ACTIONS:
return S3SourceName.PROVIDER_ACTIONS
elif entity == cls.PROVIDER_SESSIONS:
return S3SourceName.PROVIDER_SESSIONS
else:
raise NotImplementedError()
class S3SourceName(Enum):
PROMO_ROUNDS_LEGACY = 'promo-rounds-legacy'
PROMO_GLOBAL_EVENTS = 'promo-global-events'
PROVIDER_PLAYERS = 'provider-players'
COMMON_EX_RATES = 'common-ex-rates'
PROMO_CAMPAIGNS = 'promo-campaigns'
PROVIDER_PROJECTS = 'provider-projects'
PROVIDER_GAMES = 'provider-games'
PLATFORM_GAMES = 'platform-games'
PROVIDER_GAMES_POSITIONS = 'provider-games-positions'
COMMON_PROJECT_MAPPING = 'common-project-mapping'
PROVIDER_TESTPLAYERS = 'provider-testplayers'
PROMO_GIFTS = 'promo-gifts'
# to upload failed sessions apart from firehose pipeline
PROVIDER_SESSIONS = 'provider-sessions'
PROVIDER_ACTIONS = 'provider-actions'
PROVIDER_GEOTAGS = 'provider-geotags'
COMMON_CURRENCIES_SETTINGS = 'currencies-settings'
COMMON_MARKETS = 'markets'
PROMO_CURRENCY_RATES = 'promo-currency-rates'
PROMO_PLAYERS = 'promo-players'
PROMO_TOURNAMENT_REPORT = 'promo__tournament_report'
PROMO_JACKPOT_REPORT = 'promo__jackpot_report'
PROMO_SERIES_REPORT = 'promo__series_report'
PROMO_SERIES_TOURNAMENT_REPORT = 'promo__series_tournament_report'
PROMO_PRIZE_DROP_REPORT = 'promo__prize_drop_report'
PROMO_FLIP_TO_WIN_REPORT = 'promo__flip_to_win_report'
PROMO_TOURNAMENT_REPORT_MINUTELY = 'promo__tournament_report_minutely'
PROMO_JACKPOT_REPORT_MINUTELY = 'promo__jackpot_report_minutely'
PROMO_SERIES_REPORT_MINUTELY = 'promo__series_report_minutely'
PROMO_SERIES_TOURNAMENT_REPORT_MINUTELY = 'promo__series_tournament_report_minutely'
PROMO_PRIZE_DROP_REPORT_MINUTELY = 'promo__prize_drop_report_minutely'
PROMO_FLIP_TO_WIN_REPORT_MINUTELY = 'promo__flip_to_win_report_minutely'
PROMO_EVENTS = 'promo-events'
PROMO_ROUNDS = 'promo-rounds'
PROVIDER_RAW_FINSTATS = 'finance-daily'
PROVIDER_GAME_KPI25 = 'game_kpi25'
PROVIDER_GAME_KPI25_V2 = 'game_kpi25_v2'
PROVIDER_AWARDS = 'provider-awards'
PROVIDER_FREEBETS = 'provider-freebets'
class AthenaQueryNames(Enum):
AD_HOC_QUERY = 'AD_HOC_QUERY'
AGG_RTP = 'AGG_RTP'
TABLE_PROVIDER_ACTIONS = 'TABLE_PROVIDER_ACTIONS'
TABLE_PROVIDER_SESSIONS = 'TABLE_PROVIDER_SESSIONS'
TABLE_COMMON_EX_RATES = 'TABLE_COMMON_EX_RATES'
TABLE_PROVIDER_RAW_FINANCES_STATS = 'TABLE_PROVIDER_RAW_FINANCES_STATS'
TABLE_PLATFORM_FINANCES_STATS = 'TABLE_PLATFORM_FINANCES_STATS'
TABLE_PROVIDER_FREEBETS = 'TABLE_PROVIDER_FREEBETS'
TABLE_PROVIDER_AWARDS = 'TABLE_PROVIDER_AWARDS'
TABLE_PROMO_ROUNDS = 'TABLE_PROMO_ROUNDS'
TABLE_PROMO_ROUNDS_PROD_S3 = 'TABLE_PROMO_ROUNDS_PROD_S3'
TABLE_PROMO_ROUNDS_LEGACY_NO_SNS = 'TABLE_PROMO_ROUNDS_LEGACY_NO_SNS'
TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT = 'TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT'
TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT_PROD_S3 = (
'TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT_PROD_S3'
)
AGG_ROUNDS_MINUTELY = 'AGG_ROUNDS_MINUTELY'
AGG_ROUNDS_MINUTELY_LEGACY_INT_ROUND_ID = 'AGG_ROUNDS_MINUTELY_LEGACY_INT_ROUND_ID'
TABLE_PROMO_EVENTS = 'TABLE_PROMO_EVENTS'
TABLE_PROMO_EVENTS_PROD_S3 = 'TABLE_PROMO_EVENTS_PROD_S3'
TABLE_PROMO_EVENTS_LEGACY_NO_SNS = 'TABLE_PROMO_EVENTS_LEGACY_NO_SNS'
UNLOAD_LAST_SESSIONS = 'UNLOAD_LAST_SESSIONS'
TABLE_LAST_SESSIONS_TABLE = 'TABLE_LAST_SESSIONS_TABLE'
SELECT_LAST_SESSION = 'SELECT_LAST_SESSION'
TABLE_PROMO_GIFTS = 'TABLE_PROMO_GIFTS'
TABLE_PROMO_GLOBAL_EVENTS = 'TABLE_PROMO_GLOBAL_EVENTS'
TABLE_PAIDBONUSES_BY_SESSIONS = 'TABLE_PAIDBONUSES_BY_SESSIONS'
AGG_PAIDBONUSES_BY_SESSION = 'AGG_PAIDBONUSES_BY_SESSION'
TABLE_PROMO_CAMPAIGNS = 'TABLE_PROMO_CAMPAIGNS'
TABLE_PROVIDER_PROJECTS = 'TABLE_PROVIDER_PROJECTS'
TABLE_PROVIDER_GAMES = 'TABLE_PROVIDER_GAMES'
TABLE_PLATFORM_GAMES = 'TABLE_PLATFORM_GAMES'
TABLE_COMMON_PROJECT_MAPPING = 'TABLE_COMMON_PROJECT_MAPPING'
TABLE_PROVIDER_TESTPLAYERS = 'TABLE_PROVIDER_TESTPLAYERS'
TABLE_PROVIDER_PLAYERS = 'TABLE_PROVIDER_PLAYERS'
AGG_BIGWINS = 'AGG_BIGWINS'
AGG_PROVIDER_ACTIONS_COLLECT_STATS = 'AGG_PROVIDER_ACTIONS_COLLECT_STATS'
AGG_PROVIDER_FRAUD_DETECT = 'AGG_PROVIDER_FRAUD_DETECT'
TABLE_GAMES_POSITIONS = 'TABLE_GAMES_POSITIONS'
AGG_GAME_RANKS = 'AGG_GAME_RANKS'
TABLE_PROVIDER_GEOTAGS = 'TABLE_PROVIDER_GEOTAGS'
TABLE_PROVIDER_GAME_RANKS = 'TABLE_PROVIDER_GAME_RANKS'
SELECT_GAME_RANKS = 'SELECT_GAME_RANKS'
AGG_EVENTS_MINUTELY = 'AGG_EVENTS_MINUTELY'
# flip to win aggregation
TABLE_FLIP_TO_WIN_IMPACT = 'TABLE_FLIP_TO_WIN_IMPACT'
TABLE_TMP_FLIP_TO_WIN_IMPACT = 'TABLE_TMP_FLIP_TO_WIN_IMPACT'
UNLOAD_FLIP_TO_WIN_IMPACT = 'UNLOAD_FLIP_TO_WIN_IMPACT'
UNLOAD_TMP_FLIP_TO_WIN_IMPACT = 'UNLOAD_TMP_FLIP_TO_WIN_IMPACT'
DROP_TABLE = 'DROP_TABLE'
DROP_TABLE_IF_EXISTS = 'DROP_TABLE_IF_EXISTS'
MSCK_REPAIR_TABLE = 'MSCK_REPAIR_TABLE'
SHOW_CREATE_TABLE = 'SHOW_CREATE_TABLE'
TABLE_COMMON__CURRENCIES_SETTINGS = 'TABLE_COMMON__CURRENCIES_SETTINGS'
TABLE_COMMON__MARKETS = 'TABLE_COMMON__MARKETS'
SELECT_PLAYER_ACTIONS_HISTORY = 'SELECT_PLAYER_ACTIONS_HISTORY'
SELECT_PROMO_WINNERS_FLIP_TO_WIN = 'SELECT_PROMO_WINNERS_FLIP_TO_WIN'
SELECT_PROMO_WINNERS_JACKPOTS = 'SELECT_PROMO_WINNERS_JACKPOTS'
# new query versions for winners report reset pipeline
SELECT_PROMO_WINNERS_FLIP_TO_WIN_V2 = 'SELECT_PROMO_WINNERS_FLIP_TO_WIN_V2'
SELECT_PROMO_WINNERS_JACKPOTS_V2 = 'SELECT_PROMO_WINNERS_JACKPOTS_V2'
AGG_PROVIDER__SAS_RETENTION = 'AGG_PROVIDER__SAS_RETENTION'
AGG_PROVIDER_GAME_KPI25 = 'AGG_PROVIDER_GAME_KPI25'
AGG_PROVIDER_GAME_KPI25_V2 = 'AGG_PROVIDER_GAME_KPI25_V2'
TABLE_PROVIDER_SAS_RETENTION = 'TABLE_PROVIDER_SAS_RETENTION'
TABLE_PROVIDER_GAME_KPI25 = 'TABLE_PROVIDER_GAME_KPI25'
TABLE_PROVIDER_GAME_KPI25_V2 = 'TABLE_PROVIDER_GAME_KPI25_V2'
TABLE_BUY_BONUS_GAMES = 'TABLE_BUY_BONUS_GAMES'
TABLE_PROMO_CURRENCY_RATES = 'TABLE_PROMO_CURRENCY_RATES'
TABLE_PROMO_PLAYERS = 'TABLE_PROMO_PLAYERS'
TABLE_PROMO_TOURNAMENT_REPORT = 'TABLE_PROMO_TOURNAMENT_REPORT'
TABLE_PROMO_TOURNAMENT_REPORT_MINUTELY = 'TABLE_PROMO_TOURNAMENT_REPORT_MINUTELY'
TABLE_PROMO_JACKPOT_REPORT = 'TABLE_PROMO_JACKPOT_REPORT'
TABLE_PROMO_JACKPOT_REPORT_MINUTELY = 'TABLE_PROMO_JACKPOT_REPORT_MINUTELY'
TABLE_PROMO_SERIES_REPORT = 'TABLE_PROMO_SERIES_REPORT'
TABLE_PROMO_SERIES_REPORT_MINUTELY = 'TABLE_PROMO_SERIES_REPORT_MINUTELY'
TABLE_PROMO_SERIES_TOURNAMENT_REPORT = 'TABLE_PROMO_SERIES_TOURNAMENT_REPORT'
TABLE_PROMO_SERIES_TOURNAMENT_REPORT_MINUTELY = 'TABLE_PROMO_SERIES_TOURNAMENT_REPORT_MINUTELY'
TABLE_PROMO_PRIZE_DROP_REPORT = 'TABLE_PROMO_PRIZE_DROP_REPORT'
TABLE_PROMO_PRIZE_DROP_REPORT_MINUTELY = 'TABLE_PROMO_PRIZE_DROP_REPORT_MINUTELY'
TABLE_PROMO_FLIP_TO_WIN_REPORT = 'TABLE_PROMO_FLIP_TO_WIN_REPORT'
TABLE_PROMO_FLIP_TO_WIN_REPORT_MINUTELY = 'TABLE_PROMO_FLIP_TO_WIN_REPORT_MINUTELY'
PROMO_AGG_PERFORMANCE_COMPARISON = 'PROMO_AGG_PERFORMANCE_COMPARISON'
TABLE_PROVIDER_PLAYERS_REG_AT = 'TABLE_PROVIDER_PLAYERS_REG_AT'
AGG_PROVIDER_PLAYERS_REG_AT = 'AGG_PROVIDER_PLAYERS_REG_AT'
AGG_PROVIDER_ACTIONS_FILES_METADATA = 'AGG_PROVIDER_ACTIONS_FILES_METADATA'
AGG_PROVIDER_SESSIONS_S3_HOURLY_COUNT = 'AGG_PROVIDER_SESSIONS_S3_HOURLY_COUNT'
AGG_BUY_BONUS_GAMES = 'AGG_BUY_BONUS_GAMES'
CHECK_PROVIDER_BUY_BONUS_GAMES_COUNT = 'CHECK_PROVIDER_BUY_BONUS_GAMES_COUNT'
class AthenaQueryStatuses(Enum):
RUNNING = 'RUNNING'
QUEUED = 'QUEUED'
SUCCEEDED = 'SUCCEEDED'
FAILED = 'FAILED'
CANCELLED = 'CANCELLED'
WAITING_STATUSES = (QUEUED, RUNNING)
FAILED_STATUSES = (FAILED, CANCELLED)
DONE_STATUSES = (SUCCEEDED,)
class AthenaPeriods(Enum):
HOURLY = 'HOURLY'
DAILY = 'DAILY'
MONTHLY = 'MONTHLY'
YEARLY = 'YEARLY'
NONE = 'NONE'
class MigrationStatus(Enum):
NONE = 'NONE'
# migration or task configured
NEW = 'NEW'
# migration wait retry
RETRY = 'RETRY'
# migration or task in progress
IN_PROGRESS = 'IN_PROGRESS'
# migration or task done
SUCCESS = 'SUCCESS'
# migration or task failed
FAILED = 'FAILED'
# migration suspended manually, but preserved to save its data etc.
CANCELLED = 'CANCELLED'
class MigrationName(Enum):
ATHENA_ADD_NEW_COLUMN_TO_PROVIDER_PROJECTS = 'ATHENA_ADD_NEW_COLUMN_TO_PROVIDER_PROJECTS'
ATHENA_CREATE_COMMON_CURRENCIES_SETTINGS = 'ATHENA_CREATE_COMMON_CURRENCIES_SETTINGS'
ATHENA_CREATE_COMMON_CURRENCIES_SETTINGS_PROD = 'ATHENA_CREATE_COMMON_CURRENCIES_SETTINGS_PROD'
ATHENA_CREATE_PROMO_CURRENCY_RATES = 'ATHENA_CREATE_PROMO_CURRENCY_RATES'
ATHENA_CREATE_PROVIDER_GAME_RANKS = 'ATHENA_CREATE_PROVIDER_GAME_RANKS'
ATHENA_CREATE_PROVIDER_GEOTAGS = 'ATHENA_CREATE_PROVIDER_GEOTAGS'
ATHENA_CREATE_PROVIDER_PLAYERS_REG_AT = 'ATHENA_CREATE_PROVIDER_PLAYERS_REG_AT'
ATHENA_CREATE_PROVIDER_PLAYERS_TABLE = 'ATHENA_CREATE_PROVIDER_PLAYERS_TABLE'
CREATE_COMMON_PROJECT_MAPPING_TABLE = 'CREATE_COMMON_PROJECT_MAPPING_TABLE'
CREATE_COMMON__MARKETS_TABLE = 'CREATE_COMMON__MARKETS_TABLE'
CREATE_COMMON__MARKETS_TABLE_PROD = 'CREATE_COMMON__MARKETS_TABLE_PROD'
CREATE_PROMO_CAMPAIGNS_TABLE = 'CREATE_PROMO_CAMPAIGNS_TABLE'
UPGRADE_PROMO_CAMPAIGNS_ADD_BLOCKED_FIELDS = 'UPGRADE_PROMO_CAMPAIGNS_ADD_BLOCKED_FIELDS'
CREATE_PROMO_GIFTS_TABLE = 'CREATE_PROMO_GIFTS_TABLE'
CREATE_PROMO_GLOBAL_EVENTS_TABLE = 'CREATE_PROMO_GLOBAL_EVENTS_TABLE'
CREATE_PROMO_PLAYERS_TABLE = 'CREATE_PROMO_PLAYERS_TABLE'
CREATE_PROMO_ROUNDS_TABLE = 'CREATE_PROMO_ROUNDS_TABLE'
CREATE_PROVIDER_GAMES_TABLE = 'CREATE_PROVIDER_GAMES_TABLE'
CREATE_PROVIDER_GAMES_TABLE_PROD = 'CREATE_PROVIDER_GAMES_TABLE_PROD'
CREATE_PROVIDER_GAME_KPI25_TABLE = 'CREATE_PROVIDER_GAME_KPI25_TABLE'
CREATE_PROVIDER_GAME_KPI25_V2_TABLE = 'CREATE_PROVIDER_GAME_KPI25_V2_TABLE'
BACKFILL_PROVIDER_GAME_KPI25_V2 = 'BACKFILL_PROVIDER_GAME_KPI25_V2'
CREATE_PROVIDER_PROJECTS_TABLE = 'CREATE_PROVIDER_PROJECTS_TABLE'
CREATE_PROVIDER_PROJECTS_TABLE_PROD = 'CREATE_PROVIDER_PROJECTS_TABLE_PROD'
CREATE_PROVIDER_SAS_RETENTION_TABLE = 'CREATE_PROVIDER_SAS_RETENTION_TABLE'
CREATE_PROVIDER_TESTPLAYERS_TABLE = 'CREATE_PROVIDER_TESTPLAYERS_TABLE'
CREATE_PROVIDER_TESTPLAYERS_TABLE_PROD = 'CREATE_PROVIDER_TESTPLAYERS_TABLE_PROD'
CREATE_TABLE_COMMON_EX_RATES = 'CREATE_TABLE_COMMON_EX_RATES'
CREATE_TABLE_COMMON_EX_RATES_PROD = 'CREATE_TABLE_COMMON_EX_RATES_PROD'
CREATE_TABLE_PAIDBONUSES_BY_SESSIONS = 'CREATE_TABLE_PAIDBONUSES_BY_SESSIONS'
CREATE_TABLE_PLATFORM_FINANCES_STATS = 'CREATE_TABLE_PLATFORM_FINANCES_STATS'
CREATE_TABLE_PROMO_EVENTS = 'CREATE_TABLE_PROMO_EVENTS'
CREATE_TABLE_PROMO_EVENTS_LEGACY_NO_SNS = 'CREATE_TABLE_PROMO_EVENTS_LEGACY_NO_SNS'
CREATE_TABLE_PROMO_EVENTS_PROD_S3 = 'CREATE_TABLE_PROMO_EVENTS_PROD_S3'
CREATE_TABLE_PROMO_FLIP_TO_WIN_REPORT_MINUTELY = (
'CREATE_TABLE_PROMO_FLIP_TO_WIN_REPORT_MINUTELY'
)
CREATE_TABLE_PROMO_JACKPOT_REPORT = 'CREATE_TABLE_PROMO_JACKPOT_REPORT'
CREATE_TABLE_PROMO_JACKPOT_REPORT_MINUTELY = 'CREATE_TABLE_PROMO_JACKPOT_REPORT_MINUTELY'
CREATE_TABLE_PROMO_PRIZE_DROP_REPORT_MINUTELY = 'CREATE_TABLE_PROMO_PRIZE_DROP_REPORT_MINUTELY'
CREATE_TABLE_PROMO_ROUNDS_LEGACY_NO_SNS = 'CREATE_TABLE_PROMO_ROUNDS_LEGACY_NO_SNS'
CREATE_TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT = 'CREATE_TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT'
CREATE_TABLE_PROMO_ROUNDS_PROD = 'CREATE_TABLE_PROMO_ROUNDS_PROD_S3'
CREATE_TABLE_PROMO_SERIES_REPORT = 'CREATE_TABLE_PROMO_SERIES_REPORT'
CREATE_TABLE_PROMO_SERIES_REPORT_MINUTELY = 'CREATE_TABLE_PROMO_SERIES_REPORT_MINUTELY'
CREATE_TABLE_PROMO_SERIES_TOURNAMENT_REPORT = 'CREATE_TABLE_PROMO_SERIES_TOURNAMENT_REPORT'
CREATE_TABLE_PROMO_SERIES_TOURNAMENT_REPORT_MINUTELY = (
'CREATE_TABLE_PROMO_SERIES_TOURNAMENT_REPORT_MINUTELY'
)
CREATE_TABLE_PROMO_TOURNAMENT_REPORT = 'CREATE_TABLE_PROMO_TOURNAMENT_REPORT'
CREATE_TABLE_PROMO_TOURNAMENT_REPORT_MINUTELY = 'CREATE_TABLE_PROMO_TOURNAMENT_REPORT_MINUTELY'
CREATE_TABLE_PROVIDER_ACTIONS = 'CREATE_TABLE_PROVIDER_ACTIONS'
CREATE_TABLE_PROVIDER_ACTIONS_PROD = 'CREATE_TABLE_PROVIDER_ACTIONS_PROD'
CREATE_TABLE_PROVIDER_AWARDS = 'CREATE_TABLE_PROVIDER_AWARDS'
CREATE_TABLE_PROVIDER_FREEBETS = 'CREATE_TABLE_PROVIDER_FREEBETS'
CREATE_TABLE_PROVIDER_RAW_FINANCES_STATS = 'CREATE_TABLE_PROVIDER_RAW_FINANCES_STATS'
CREATE_TABLE_PROVIDER_SESSIONS = 'CREATE_TABLE_PROVIDER_SESSIONS'
CREATE_TABLE_BUY_BONUS_GAMES = 'CREATE_TABLE_BUY_BONUS_GAMES'
PROMO_RE_CREATE_CAMPAIGN_TABLE = 'PROMO_RE_CREATE_CAMPAIGN_TABLE'
REMOVE_PLAYERGAME_ID_FROM_ATHENA_PROVIDER_SESSIONS = (
'REMOVE_PLAYERGAME_ID_FROM_ATHENA_PROVIDER_SESSIONS'
)
TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT_PROD_S3 = (
'TABLE_PROMO_ROUNDS_LEGACY_ROUND_ID_INT_PROD_S3'
)
UPDATE_ANALYTICS_SETTINGS = 'UPDATE_ANALYTICS_SETTINGS'
RESET_PERFORMANCE_COMPARISON_2025 = 'RESET_PERFORMANCE_COMPARISON_2025'
CREATE_PLATFORM_GAMES_TABLE = 'CREATE_PLATFORM_GAMES_TABLE'
MIGRATE_HOURLY_UPLOAD_AWARDS_FREEBETS = 'MIGRATE_HOURLY_UPLOAD_AWARDS_FREEBETS'
EXTEND_AWARDS_FREEBETS_COLLECT_JOB_STATES = 'EXTEND_AWARDS_FREEBETS_COLLECT_JOB_STATES'
ATHENA_ADD_AWARDS_CURRENCY_TYPE = 'ATHENA_ADD_AWARDS_CURRENCY_TYPE'
ATHENA_ADD_FREEBETS_CURRENCY_TYPE = 'ATHENA_ADD_FREEBETS_CURRENCY_TYPE'
UPLOAD_PROVIDER_FINANCES_HISTORY = 'UPLOAD_PROVIDER_FINANCES_HISTORY'
NORMALIZE_BONUS_CLASS = 'NORMALIZE_BONUS_CLASS'
BACKFILL_FRAUD_DETECT_HISTORY_HOURLY = 'BACKFILL_FRAUD_DETECT_HISTORY_HOURLY'
REFRESH_INTERNAL_DOMAINS = 'REFRESH_INTERNAL_DOMAINS'
UPLOAD_ATHENA_PROVIDER_AGG_BUY_BONUS_GAMES = 'UPLOAD_ATHENA_PROVIDER_AGG_BUY_BONUS_GAMES'
DELETE_JACKPOTS_EVENTS_AGG_STATES = 'DELETE_JACKPOTS_EVENTS_AGG_STATES'
class MigrationRunnerName(Enum):
CELERY = 'CELERY'
MANUAL = 'MANUAL'
NONE = 'NONE'
APP = 'APP'
class ActionCtype(Enum):
REAL = 'real'
FUN = 'fun'
FEATURE_FREESPINS = 'feature_freespins'
FLEXIBLE = 'flexible'
FIXED = 'fixed'
AWARD_MONEY = 'award_money'
AWARD_SOUVENIR = 'award_souvenir'
GIFTS = 'gifts'
@classmethod
def from_feature_type(cls, feature_type: str) -> 'ActionCtype':
if not feature_type:
return cls.REAL
elif feature_type == 'feature_freespins':
return cls.FEATURE_FREESPINS
elif feature_type == 'flexible':
return cls.FLEXIBLE
elif feature_type == 'fixed':
return cls.FIXED
elif feature_type == 'money':
return cls.AWARD_MONEY
elif feature_type == 'souvenir':
return cls.AWARD_SOUVENIR
else:
return cls.GIFTS
class CheckerLevels(Enum):
CRITICAL = 'CRITICAL'
WARNING = 'WARNING'
INFO = 'INFO'
class CheckerCacheKey(Enum):
"""
Redis cache keys for checker results.
Use pattern: analytics:{domain}:{entity}:state
"""
FRAUD_DETECT = 'analytics:provider:fraud_detect:state'
FRAUD_DETECT_GAME = 'analytics:provider:fraud_detect_game:state'
class FraudAlertType(Enum):
PROJECT = 'PROJECT'
GAME_AND_PROJECT = 'GAME_AND_PROJECT'
class FraudAlertLevel(Enum):
SOFT = 'SOFT'
HARD = 'HARD'
DISASTER = 'DISASTER'
class OpsgeniePriority(Enum):
P1 = 'P1'
P2 = 'P2'
P3 = 'P3'
P4 = 'P4'
P5 = 'P5'
class ApiResponseFormat(Enum):
JSON = 'JSON'
CSV = 'CSV'
ZIP = 'ZIP'
PROMETHEUS = 'PROMETHEUS'
class FeatureName(Enum):
PROMO_ROUND_ID_TO_STRING = 'PROMO_ROUND_ID_TO_STRING'
PROMO_PERFORMANCE_COMPARISON = 'PROMO_PERFORMANCE_COMPARISON'
PROVIDER_FINSTATS_WITH_ACTION_COUNTRY = 'PROVIDER_FINSTATS_WITH_ACTION_COUNTRY'
PROVIDER_GAME_KPI25 = 'PROVIDER_GAME_KPI25'
PROVIDER_SESSIONS_S3_UPLOAD_NEW_SOURCE = 'PROVIDER_SESSIONS_S3_UPLOAD_NEW_SOURCE'
PROVIDER_SESSIONS_FROM_SNS = 'PROVIDER_SESSIONS_FROM_SNS'
PROVIDER_PAIDBONUSES_BY_SESSIONS = 'PROVIDER_PAIDBONUSES_BY_SESSIONS'
PROVIDER_BONUS_CLASS = 'PROVIDER_BONUS_CLASS'
class ServiceStatusApiResponseFormat(Enum):
JSON = ApiResponseFormat.JSON
PROMETHEUS = ApiResponseFormat.PROMETHEUS
class PgQueryNames(Enum):
CLEAR_PROVIDER_FRAUD_DETECT_HISTORY = 'CLEAR_PROVIDER_FRAUD_DETECT_HISTORY'
PLATFORM_GET_RAW_FINANCES_FOR_FIREHOSE = 'PLATFORM_GET_RAW_FINANCES_FOR_FIREHOSE'
SELECT_JIRA_BI_PARTNERS = 'SELECT_JIRA_BI_PARTNERS'
SELECT_JIRA_GAMES = 'SELECT_JIRA_GAMES'
SELECT_JIRA_OPERATORS = 'SELECT_JIRA_OPERATORS'
SELECT_JIRA_PROJECTS_LIST = 'SELECT_JIRA_PROJECTS_LIST'
SELECT_PROVIDER_GAME_KPI25_TO_PROCESS = 'SELECT_PROVIDER_GAME_KPI25_TO_PROCESS'
SELECT_PROVIDER_GAME_KPI25_REPORT = 'SELECT_PROVIDER_GAME_KPI25_REPORT'
PROVIDER_AGG_PLAYERS_INSERT = 'PROVIDER_AGG_PLAYERS_INSERT'
PROVIDER_AGG_FINANCES_DAILY_TMP_UPSERT = 'PROVIDER_AGG_FINANCES_DAILY_TMP_UPSERT'
PROVIDER_AGG_FINANCES_HLL_DAILY_INSERT = 'PROVIDER_AGG_FINANCES_HLL_DAILY_INSERT'
PROVIDER_AGG_GAME_RANKS_DATA_READY = 'PROVIDER_AGG_GAME_RANKS_DATA_READY'
ALERT_PROVIDER_FRAUD_DETECT_PROJECT = 'ALERT_PROVIDER_FRAUD_DETECT_PROJECT'
ALERT_PROVIDER_FRAUD_DETECT_GAME = 'ALERT_PROVIDER_FRAUD_DETECT_GAME'
CHECK_PROVIDER_FRAUD_DETECT_DUPLICATE = 'CHECK_PROVIDER_FRAUD_DETECT_DUPLICATE'
GET_PROVIDER_FRAUD_DETECT_COUNTER = 'GET_PROVIDER_FRAUD_DETECT_COUNTER'
PROVIDER_ALERT_RTP_CHECK = 'PROVIDER_ALERT_RTP_CHECK'
PROVIDER_ALERT_BIGWINS_GET = 'PROVIDER_ALERT_BIGWINS_GET'
PROVIDER_ALERT_BIGWINS_UPDATE = 'PROVIDER_ALERT_BIGWINS_UPDATE'
PROVIDER_CHECK_FINANCES_AGG_HLL = 'PROVIDER_CHECK_FINANCES_AGG_HLL'
PROVIDER_CHECK_FINANCES_HLL_RECORDS = 'PROVIDER_CHECK_FINANCES_HLL_RECORDS'
PROVIDER_CHECK_ACTIONS_DEVIATION = 'PROVIDER_CHECK_ACTIONS_DEVIATION'
PROVIDER_COLLECTOR_TEST_PLAYERS_INSERT = 'PROVIDER_COLLECTOR_TEST_PLAYERS_INSERT'
PROVIDER_UPLOADER_PLAYERS_SELECT = 'PROVIDER_UPLOADER_PLAYERS_SELECT'
PROVIDER_UPLOADER_BONUSES_SELECT = 'PROVIDER_UPLOADER_BONUSES_SELECT'
PROVIDER_UPLOADER_FINANCE_DAILY_SELECT = 'PROVIDER_UPLOADER_FINANCE_DAILY_SELECT'
PROVIDER_UPLOADER_GET_MIN_FINANCES_UPLOADED_AT = (
'PROVIDER_UPLOADER_GET_MIN_FINANCES_UPLOADED_AT'
)
PROVIDER_UPLOADER_GET_MIN_PLAYERS_UPLOADED_AT = 'PROVIDER_UPLOADER_GET_MIN_PLAYERS_UPLOADED_AT'
PROVIDER_UTIL_PROJECTS_FOR_JOB = 'PROVIDER_UTIL_PROJECTS_FOR_JOB'
SHARED_CHECK_JOB_UPLOAD_STATUS = 'SHARED_CHECK_JOB_UPLOAD_STATUS'
SELECT_PROMO_PLAYER_PARTICIPANT = 'SELECT_PROMO_PLAYER_PARTICIPANT'
PROMO_GET_CAMPAIGN_S3_FILES_METADATA = 'PROMO_GET_CAMPAIGN_S3_FILES_METADATA'
PROMO_GET_CAMPAIGNS_TO_RESET_S3_DELAY = 'PROMO_GET_CAMPAIGNS_TO_RESET_S3_DELAY'
PROMO_POSTPROCESS_UPDATE_GIFTS = 'PROMO_POSTPROCESS_UPDATE_GIFTS'
PROMO_POSTPROCESS_UPDATE_PLACES = 'PROMO_POSTPROCESS_UPDATE_PLACES'
PROMO_POSTPROCESS_UPDATE_SERIES_SCORE = 'PROMO_POSTPROCESS_UPDATE_SERIES_SCORE'
PROMO_GET_FINANCE_REPORT = 'PROMO_GET_FINANCE_REPORT'
PROMO_GET_FULL_REPORT_WITH_PLACE = 'PROMO_GET_FULL_REPORT_WITH_PLACE'
PROMO_GET_WINNERS_REPORT = 'PROMO_GET_WINNERS_REPORT'
PROMO_GET_SERIES_FULL_REPORT = 'PROMO_GET_SERIES_FULL_REPORT'
PROMO_GET_SERIES_WINNERS_REPORT = 'PROMO_GET_SERIES_WINNERS_REPORT'
PROMO_GET_OPTED_OUT_REPORT = 'PROMO_GET_OPTED_OUT_REPORT'
PROMO_GET_OPTED_OUT_SERIES_REPORT = 'PROMO_GET_OPTED_OUT_SERIES_REPORT'
PROMO_GET_FINANCE_TOTALS = 'PROMO_GET_FINANCE_TOTALS'
PROMO_CREATE_TOURNAMENT_FULL_REPORT = 'PROMO_CREATE_TOURNAMENT_FULL_REPORT'
PROMO_CREATE_DAILY_REWARD_FULL_REPORT = 'PROMO_CREATE_DAILY_REWARD_FULL_REPORT'
PROMO_CREATE_FLIP_TO_WIN_FULL_REPORT = 'PROMO_CREATE_FLIP_TO_WIN_FULL_REPORT'
PROMO_CREATE_PRIZE_DROP_FULL_REPORT = 'PROMO_CREATE_PRIZE_DROP_FULL_REPORT'
PROMO_CREATE_SERIES_FULL_REPORT = 'PROMO_CREATE_SERIES_FULL_REPORT'
PROMO_CREATE_SERIES_TOURNAMENT_FULL_REPORT = 'PROMO_CREATE_SERIES_TOURNAMENT_FULL_REPORT'
PROMO_CREATE_JACKPOT_CHILDREN_FULL_REPORT = 'PROMO_CREATE_JACKPOT_CHILDREN_FULL_REPORT'
PROMO_CREATE_JACKPOT_PARENT_FULL_REPORT = 'PROMO_CREATE_JACKPOT_PARENT_FULL_REPORT'
PROMO_CREATE_TOURNAMENT_MINUTELY_REPORT = 'PROMO_CREATE_TOURNAMENT_MINUTELY_REPORT'
PROMO_CREATE_DAILY_REWARD_MINUTELY_REPORT = 'PROMO_CREATE_DAILY_REWARD_MINUTELY_REPORT'
PROMO_CREATE_FLIP_TO_WIN_MINUTELY_REPORT = 'PROMO_CREATE_FLIP_TO_WIN_MINUTELY_REPORT'
PROMO_CREATE_PRIZE_DROP_MINUTELY_REPORT = 'PROMO_CREATE_PRIZE_DROP_MINUTELY_REPORT'
PROMO_CREATE_SERIES_MINUTELY_REPORT = 'PROMO_CREATE_SERIES_MINUTELY_REPORT'
PROMO_CREATE_SERIES_TOURNAMENT_MINUTELY_REPORT = (
'PROMO_CREATE_SERIES_TOURNAMENT_MINUTELY_REPORT'
)
PROMO_CREATE_JACKPOT_CHILDREN_MINUTELY_REPORT = 'PROMO_CREATE_JACKPOT_CHILDREN_MINUTELY_REPORT'
PROMO_CREATE_JACKPOT_PARENT_MINUTELY_REPORT = 'PROMO_CREATE_JACKPOT_PARENT_MINUTELY_REPORT'
PROMO_CREATE_DAILY_REWARD_WINNERS_REPORT = 'PROMO_CREATE_DAILY_REWARD_WINNERS_REPORT'
PROMO_CREATE_FLIP_TO_WIN_WINNERS_REPORT = 'PROMO_CREATE_FLIP_TO_WIN_WINNERS_REPORT'
PROMO_CREATE_PRIZE_DROP_WINNERS_REPORT = 'PROMO_CREATE_PRIZE_DROP_WINNERS_REPORT'
PROMO_CREATE_JACKPOT_CHILDREN_WINNER_REPORT = 'PROMO_CREATE_JACKPOT_CHILDREN_WINNER_REPORT'
RESET_PROMO_JACKPOT_FULL_REPORT = 'RESET_PROMO_JACKPOT_FULL_REPORT'
RESET_PROMO_TOURNAMENT_FULL_REPORT = 'RESET_PROMO_TOURNAMENT_FULL_REPORT'
RESET_PROMO_SERIES_TOURNAMENT_FULL_REPORT = 'RESET_PROMO_SERIES_TOURNAMENT_FULL_REPORT'
RESET_PROMO_SERIES_FULL_REPORT = 'RESET_PROMO_SERIES_FULL_REPORT'
RESET_PROMO_PRIZE_DROP_FULL_REPORT = 'RESET_PROMO_PRIZE_DROP_FULL_REPORT'
RESET_PROMO_DAILY_REWARD_FULL_REPORT = 'RESET_PROMO_DAILY_REWARD_FULL_REPORT'
RESET_PROMO_FLIP_TO_WIN_FULL_REPORT = 'RESET_PROMO_FLIP_TO_WIN_FULL_REPORT'
SELECT_FLIP_TO_WIN_GIFTS_QUERY = 'SELECT_FLIP_TO_WIN_GIFTS_QUERY'
SELECT_CHILD_JACKPOT_GIFTS_QUERY = 'SELECT_CHILD_JACKPOT_GIFTS_QUERY'
RESET_PROMO_PRIZE_DROP_WINNERS_REPORT = 'RESET_PROMO_PRIZE_DROP_WINNERS_REPORT'
RESET_PROMO_DAILY_REWARD_WINNERS_REPORT = 'RESET_PROMO_DAILY_REWARD_WINNERS_REPORT'
class AnalyticsRealms(Enum):
PROVIDER = 'provider'
PLATFORM = 'platform'
class JobGroup(Enum):
PROVIDER_PROJECT = 'provider_project'
PLATFORM_PROJECT = 'platform_project'
PROVIDER_PROMO_CAMPAIGN = 'provider_promo_campaign'
PLATFORM_PROMO_CAMPAIGN = 'platform_promo_campaign'