View Definition: album_tracklist

→ Data

Source Diagram

classDiagram
    class prose_item["prose.item"]
    class albums_item["albums.item"]
    class tracks_item["tracks.item"]
            albums_item --> prose_item : liner_notes
            tracks_item --> albums_item : album_id

Definition

From

albums

Join

To On (left = right) As Pre-join where Flatten
tracks id = album_id tracks
prose liner_notes = id liner_matches {of: liner_matches, as: liner, preserve_empty: true}

Select

Item As
id id
title title
artist_id artist_id
label_id label_id
genre_id genre_id
year year
is_live is_live
cover cover
tracks tracks
liner liner

Shape

Type: album_tracklist.item

id type required validation metadata
id string yes
title string yes {description: Album title.}
artist_id string yes {description: Id of the artist who released this album.}
label_id string {description: Id of the label that released this album.}
genre_id string {description: Id of the album's primary genre.}
year integer yes {description: Year of release.}
is_live boolean {description: 'True for concert recordings, false (or omitted) for studio albums.'}
cover string {description: 'Id of the cover-art blob (a contents-relative path, extension included). Optional - only some albums ship cover art.'}
tracks album_tracklist.item.tracks.item[] yes
liner object
liner.id string yes {title: Prose id, description: Stable identifier derived from the Markdown file's path (without extension).}
liner.title string {title: Prose title, description: Display title taken from the first H1 heading of the Markdown source. Absent when the source has no H1.}
liner.order_key string {title: Prose order key, description: 'Sort key for reading order, derived from the id: sorting prose records by this string yields folder pre-order (each folder''s index first, then its subtree, contiguous).'}
liner.depth integer {title: Prose outline depth, description: 'Heading depth of the record in the folder outline, derived from the id (the root index is 1). A folder''s index sits one level above its files.'}
liner.headings album_tracklist.item.liner.headings.item[] {title: Prose headings, description: 'Headings found in the Markdown content, in document order, as link-target nodes. Each carries the GitHub-compatible slug of its text as `id` (deduplicated within the content), the heading text as `title`, and its `level` (1-6). A cross-document link to a heading resolves against these.'}
liner.mime_type string yes {title: Prose MIME type, description: MIME type of the source (currently always `text/markdown`). A record-level header like a blob record's; the payload it tags is `content`.}
liner.content string yes {title: Prose content, description: 'Markdown source of the file. Relative links to other prose documents are normalized to their `node:` form (`[t](other.md)` → `[t](node:/prose/<id>)`); the template `relink` filter resolves these back to URLs.'}

Type: album_tracklist.item.tracks.item

id type required validation metadata
id string yes
title string yes {description: Track title.}
album_id string yes {description: Id of the album this track appears on.}
track_no integer yes {description: 'Position of the track within the album, 1-indexed.'}
duration_sec integer {description: Duration in whole seconds.}

Type: album_tracklist.item.liner.headings.item

id type required validation metadata
id string yes {title: Heading id, description: 'GitHub-compatible slug of the heading text, matching the id the renderer stamps on the heading. Deduplicated within the content by a `-N` suffix.'}
title string yes {title: Heading title, description: Text of the heading.}
level integer yes {title: Heading level, description: 'Heading level, 1 (H1) through 6 (H6).'}