from apollo_utils.core.utils.ext_enum import ExtEnum from datetime import date from enum import IntEnum from server.constants import DSP class ChartBreakdown(ExtEnum): WEEKLY = "weekly" DAILY = "daily" CHART_MIN_DATE = { ChartBreakdown.DAILY: date(2017, 1, 1), ChartBreakdown.WEEKLY: date(2016, 12, 29), } class ChartType(ExtEnum): REGIONAL = "regional" VIRAL = "viral" class ChartInclude(ExtEnum): IS_STARRED = "is_starred" IS_SONY = "is_sony" class ChartOrder(ExtEnum): IS_STARRED = "is_starred_track" IS_STARRED_DESC = "-is_starred_track" POSITION = "position" POSITION_DESC = "-position" TREND = "trend" TREND_DESC = "-trend" NAME = "name" NAME_DESC = "-name" ID = "id" ID_DESC = "-id" IS_SONY = "is_sony" IS_SONY_DESC = "-is_sony" # TODO: obsolete values, need to remove later TRENDS = "trends" TRENDS_DESC = "-trends" MOVES = "moves" MOVES_DESC = "-moves" TRACK_ID = "track_id" TRACK_ID_DESC = "-track_id" TRACK_NAME = "track_name" TRACK_NAME_DESC = "-track_name" CHART_ORDER_MAPPING = { ChartOrder.TRENDS.value: ChartOrder.TREND.value, ChartOrder.TRENDS_DESC.value: ChartOrder.TREND_DESC.value, ChartOrder.MOVES.value: ChartOrder.TREND.value, ChartOrder.MOVES_DESC.value: ChartOrder.TREND_DESC.value, ChartOrder.TRACK_ID.value: ChartOrder.ID.value, ChartOrder.TRACK_ID_DESC.value: ChartOrder.ID_DESC.value, ChartOrder.TRACK_NAME.value: ChartOrder.NAME.value, ChartOrder.TRACK_NAME_DESC.value: ChartOrder.NAME_DESC.value, } CHART_POSITION_MIN: int = 1 CHART_POSITION_MAX: int = 200 CHART_MOVES_DEFAULT: int = 5 PREFIX_ARTIST = "spotify:artist:" class SourceType(IntEnum): CHART = 0 ADDITIONS = 1 REMOVALS = 2 SUMMARY = 3 SourceTypeDataHealthChartUpdateField = {DSP.APPLE.value: "last_update_date_time", DSP.SPOTIFY.value: "max_date"} EMPTY_POSITION_VALUE = {DSP.APPLE.value: 101, DSP.SPOTIFY.value: 201} class ChartLicensor(ExtEnum): SME = "sme" COUNTRY_CODE_SORTING_KEY = "country_code" RANK_SORTING_KEY = "rank"