1aaaab4640
- Add config module for yaml config (database, indexers, torrent) - Add indexer module with Torznab protocol support - Add IndexerService and TorrentService for business logic - Add REST controllers for indexer search and torrent management - Add Docker Compose for PostgreSQL and Jackett - Add ERD documentation for database schema
3.3 KiB
3.3 KiB
Lidarr Database Research Summary
Overview
Lidarr is a music collection manager that uses a Release-based system. Key design principles:
- Metadata Separation - Artist metadata separated from configuration
- Release-Centric - Works with releases, not loose tracks
- Monitoring Hierarchy - Artist → Album → Release (only one release monitored per album)
- Quality Profiles - Separate profiles for quality and metadata preferences
- Download Lifecycle - Pending → Queue → Imported → History/Blocklist
Core Entity Hierarchy
ArtistMetadata (1) ←→ (1) Artist (1) ←→ (N) Albums
↓
(N) AlbumReleases (only 1 monitored)
↓
(N) Tracks (N) ←→ (1) TrackFile
Key Entities
Music Entities
- Artists - Configuration (path, monitoring, profiles)
- ArtistMetadata - Metadata (name, images, genres, members)
- Albums - Album info with monitoring and search tracking
- AlbumReleases - Physical releases (CD, Vinyl, Digital) - only ONE monitored per album
- Tracks - Individual tracks linked to releases
- TrackFiles - Actual files on disk with quality info
Configuration
- QualityProfiles - Acceptable formats and upgrade cutoff
- MetadataProfiles - Which album types to include (Studio, EP, Live, etc.)
- RootFolders - Storage locations with defaults
Download Tracking
- PendingReleases - Delayed downloads (waiting for better quality)
- DownloadHistory - Download lifecycle events
- Blocklist - Failed/rejected releases (prevent re-download)
- History - Complete audit trail of all events
System
- Indexers - Search sources (Newznab/Torznab)
- DownloadClients - Torrent/Usenet clients
- ImportLists - Auto-import from Spotify, Last.fm, etc.
- Tags - Categorization
Monitoring States
Artist Level
monitored- Is artist being trackedmonitor_new_items- Policy for new releases (All/Future/Missing/Existing/None)
Album Level
monitored- Should we look for this albumany_release_ok- Auto-switch releases during import
Release Level
monitored- Is this the release we want (exactly ONE per album)
Download States
TrackedDownloadState:
Downloading → ImportPending → Importing → Imported
→ Ignored
→ DownloadFailed → DownloadFailedPending
History Event Types
- Grabbed - Download started
- TrackFileImported - File imported to library
- DownloadFailed - Download failed
- TrackFileDeleted - File removed
- TrackFileRenamed - File renamed
- TrackFileRetagged - Metadata updated
- AlbumImportIncomplete - Partial import
- DownloadIgnored - Download skipped
Sources
- GitHub: Lidarr/Lidarr
- Key files:
src/NzbDrone.Core/Music/Model/Artist.cssrc/NzbDrone.Core/Music/Model/Album.cssrc/NzbDrone.Core/Music/Model/Release.cs(AlbumRelease)src/NzbDrone.Core/Music/Model/Track.cssrc/NzbDrone.Core/MediaFiles/TrackFile.cssrc/NzbDrone.Core/Datastore/Migration/001_initial_setup.cssrc/NzbDrone.Core/Datastore/Migration/023_add_release_groups_etc.cs