from apollo_utils.core.utils.ext_enum import ExtEnum, extend_enum from server.constants.playlists.delphi.core import include, sort_by from server.constants.playlists.delphi.core.endpoint_allowed_constant_params import EndpointAllowedConstantParams from server.utils.common import extend_sorting_dict_mapper_with_opposite_key_value_pairs @extend_enum( include.Playlists, include.StreamsForPeriod, include.TrackInfo, include.NumTracks, include.MetaOwnerCategories, include.PlaylistDates, ) class _PublicTrackPositionsPlaylistsInclude(ExtEnum): pass @extend_enum( sort_by.StreamsForPeriod, sort_by.PlaylistId, sort_by.EarliestPositionDateTime, sort_by.AddedDate, sort_by.Date, sort_by.Followers, ) class _PublicTrackPositionsPlaylistsSortBy(ExtEnum): pass TrackPositionsPlaylists = EndpointAllowedConstantParams( include=_PublicTrackPositionsPlaylistsInclude, sort_by=_PublicTrackPositionsPlaylistsSortBy ) TrackPositionsPlaylistsApolloToDelphiProcessedFieldsSortByMapping = { sort_by.AddedDate.ADDED_DATE.value: sort_by.EarliestPositionDateTime.EARLIEST_POSITION_DATE_TIME.value, sort_by.Id.ID.value: sort_by.PlaylistId.PLAYLIST_ID.value, sort_by.CurrentPosition.CURRENT_POSITION.value: sort_by.Position.CURRENT.value, sort_by.CurrentStreams.CURRENT_STREAMS.value: sort_by.CurrentStreams.CURRENT_STREAMS.value, sort_by.Followers.FOLLOWERS.value: sort_by.Followers.FOLLOWERS.value, } extend_sorting_dict_mapper_with_opposite_key_value_pairs( TrackPositionsPlaylistsApolloToDelphiProcessedFieldsSortByMapping )