Home Reference Source Repository

src/entities/TrackEntity.js

'use strict';

/**
 * Properties and methods of the Track Entity
 *
 * @see https://developer.spotify.com/web-api/object-model/#track-object-full
 */
class TrackEntity{

    /**
     * Constructor
     * 
     * @param {Object} data Track object
     */
    constructor(data = {}) {
        this._album = data.album;
        this._artists = data.artists;
        this._available_markets = data.available_markets;
        this._disc_number = data.disc_number;
        this._duration_ms = data.duration_ms;
        this._explicit = data.explicit;
        this._external_ids = data.external_ids;
        this._external_urls = data.external_urls;
        this._href = data.href;
        this._id = data.id;
        // this._is_playable = data.is_playable; @relinking
        // this._linked_from = data.linked_from; @relinking
        this._name = data.name;
        this._popularity = data.popularity;
        this._preview_url = data.preview_url;
        this._track_number = data.track_number;
        this._type = 'track';
        this._uri = data.uri;        
    }

    /**
     * @param {Object} data Track object
     */
    set album(data) {
        this._album = data;
    }

    /**
     * @return {String} Track album
     */
    get album() {
        return this._album;
    }

    /**
     * @param {Object} data Track object
     */
    set artists(data) {
        this._artists = data;
    }

    /**
     * @return {String} Track artists
     */
    get artists() {
        return this._artists;
    }

    /**
     * @param {Object} data Track object
     */
    set available_markets(data) {
        this._available_markets = data;
    }

    /**
     * @return {String} Track available_markets
     */
    get available_markets() {
        return this._available_markets;
    }

    /**
     * @param {Object} data Track object
     */
    set disc_number(data) {
        this._disc_number = data;
    }

    /**
     * @return {String} Track disc_number
     */
    get disc_number() {
        return this._disc_number;
    }

    /**
     * @param {Object} data Track object
     */
    set duration_ms(data) {
        this._duration_ms = data;
    }

    /**
     * @return {String} Track duration_ms
     */
    get duration_ms() {
        return this._duration_ms;
    }

    /**
     * @param {Object} data Track object
     */
    set explicit(data) {
        this._explicit = data;
    }

    /**
     * @return {String} Track explicit
     */
    get explicit() {
        return this._explicit;
    }

    /**
     * @param {Object} data Track object
     */
    set external_ids(data) {
        this._external_ids = data;
    }

    /**
     * @return {String} Track external_ids
     */
    get external_ids() {
        return this._external_ids;
    }

    /**
     * @param {Object} data Track object
     */
    set external_urls(data) {
        this._external_urls = data;
    }

    /**
     * @return {String} Track external_urls
     */
    get external_urls() {
        return this._external_urls;
    }

    /**
     * @param {Object} data Track object
     */
    set href(data) {
        this._href = data;
    }

    /**
     * @return {String} Track href
     */
    get href() {
        return this._href;
    }

    /**
     * @param {Object} data Track object
     */
    set id(data) {
        this._id = data;
    }

    /**
     * @return {String} Track id
     */
    get id() {
        return this._id;
    }

    /**
     * @param {Object} data Track object
     */
    set is_playable(data) {
        this._is_playable = data;
    }

    /**
     * @return {String} Track is_playable
     */
    get is_playable() {
        return this._is_playable;
    }

    /**
     * @param {Object} data Track object
     */
    set linked_from(data) {
        this._linked_from = data;
    }

    /**
     * @return {String} Track linked_from
     */
    get linked_from() {
        return this._linked_from;
    }

    /**
     * @param {Object} data Track object
     */
    set name(data) {
        this._name = data;
    }

    /**
     * @return {String} Track name
     */
    get name() {
        return this._name;
    }

    /**
     * @param {Object} data Track object
     */
    set popularity(data) {
        this._popularity = data;
    }

    /**
     * @return {String} Track popularity
     */
    get popularity() {
        return this._popularity;
    }

    /**
     * @param {Object} data Track object
     */
    set preview_url(data) {
        this._preview_url = data;
    }

    /**
     * @return {String} Track preview_url
     */
    get preview_url() {
        return this._preview_url;
    }

    /**
     * @param {Object} data Track object
     */
    set track_number(data) {
        this._track_number = data;
    }

    /**
     * @return {String} Track track_number
     */
    get track_number() {
        return this._track_number;
    }

    /**
     * @param {Object} data Track object
     */
    set type(data) {
        this._type = data;
    }

    /**
     * @return {String} Track type
     */
    get type() {
        return this._type;
    }

    /**
     * @param {Object} data Track object
     */
    set uri(data) {
        this._uri = data;
    }

    /**
     * @return {String} Track uri
     */
    get uri() {
        return this._uri;
    }
}

/**
 * Exports the TrackEntity class.
 */
export default TrackEntity;