1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use super::{Include, Relationship};
use crate::entity::tag::Tag;
use serde::{Deserialize, Serialize};

/// A URL in MusicBrainz is a specific entity representing a regular internet Uniform Resource Locator.
/// A MusicBrainz URL entity can be edited to change the underlying internet URL it points to; and can
/// be linked to Areas, Artists, Events, Instruments, Labels, Places, Recordings, Releases, Release
/// Groups, and Series.

/// Take a look at the [relationship table](https://musicbrainz.org/relationships) on the MusicBrainz
/// server to see all types.
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct Url {
    pub id: String,
    pub resource: String,
    pub tags: Option<Vec<Tag>>,
}

impl_includes!(
    Url,
    (
        with_artist_relations,
        Include::Relationship(Relationship::Artist)
    ),
    (with_url_relations, Include::Relationship(Relationship::Url))
);