package com.radiola.domain.model

import androidx.compose.runtime.Immutable

// @Immutable: модели read-only (заполняются один раз из БД/маппера и не мутируются).
// Список tags/qualities иначе делает класс «нестабильным» для Compose → лишние
// рекомпозиции списков станций. Помечаем явно — компилятор сможет пропускать.
@Immutable
data class Station(
    val id: Int,
    val name: String,
    val prefix: String,
    val streamUrl: String,
    val coverUrl: String,
    val genre: String,
    val tags: List<String>,
    val sortOrder: Int,
    val source: String = "record",
    // Доступные качества потока (битрейты). Пусто или один элемент — переключателя нет.
    val qualities: List<StreamQuality> = emptyList()
)

/** Один вариант качества потока станции. */
@Immutable
data class StreamQuality(
    val bitrate: Int,   // kbps
    val url: String,
    val type: String    // "aac" | "mp3"
) {
    /** Человекочитаемая ступень качества по битрейту. */
    val tierLabel: String
        get() = when {
            bitrate >= 256 -> "Максимальное"
            bitrate >= 128 -> "Высокое"
            bitrate >= 96 -> "Среднее"
            bitrate >= 64 -> "Экономно"
            else -> "Минимальное"
        }
}
