"""Audio Attribute related logic.""" from backend.models.audio_attribute_query import AudioAttributeQuery from backend.models.track_audio_attribute_persister import \ TrackAudioAttributePersister def get_audio_attributes(): """Get audio attributes from DB. Returns: list of audio attributes """ return AudioAttributeQuery.get_audio_attributes() def get_track_audio_attributes(tuid): """Get audio attributes for the given tuid from DB. Returns: list of audio attribute ids """ return AudioAttributeQuery.get_track_audio_attributes(tuid) def get_track_suggested_audio_attributes(tuid): """Get suggested audio attributes for the given tuid from DB. Returns: list of audio attribute ids """ return AudioAttributeQuery.get_track_suggested_audio_attributes(tuid) def get_track_audio_attributes_edits(tuid): """Get audio attributes edits for the given tuid from DB. Returns: list of audio attribute edits ids """ return AudioAttributeQuery.get_track_audio_attributes_edits(tuid) def update_track_audio_attributes(tracks, orchard_identity_id): """Update the audio attributes for a set of tracks. Args: tracks: The list of tuid / audio attribute combinations to set orchard_identity_id: The orchard identity id Returns: response.Response: success message or database error """ return TrackAudioAttributePersister.sync_track_audio_attributes( tracks=tracks, orchard_identity_id=orchard_identity_id) def update_track_audio_attributes_edits(tracks): """Update the audio attributes edits for a set of tracks. Args: tracks: The list of tuid / audio attribute combinations to set Returns: response.Response: success message or database error """ return TrackAudioAttributePersister.sync_track_audio_attributes_edits( tracks=tracks) def write_audio_attribute_suggestions(unique_track_id, suggestions, user_uuid, review_queue_id): """Write a suggestion record for a track's suggested audio attributes. Args: unique_track_id (int): The track primary key. suggestions (list): The full suggestion items from the model. user_uuid (str): The user UUID from Orchard-Identity-Id header. review_queue_id (int): The review queue ID from the request. """ TrackAudioAttributePersister.write_audio_attribute_suggestions( unique_track_id=unique_track_id, suggestions=suggestions, user_uuid=user_uuid, review_queue_id=review_queue_id, ) def bulk_delete_track_audio_attributes(tuids): """Delete the track audio attributes for multiple tracks.""" TrackAudioAttributePersister.bulk_delete_track_audio_attributes(tuids=tuids)