import Foundation
import SwiftData

@Model
final class LocalCourse {
    @Attribute(.unique) var id: String
    var title: String
    var modeRaw: String
    var updatedAtRemote: String
    var installedAt: Date
    var lastOpenedAt: Date?
    var itemCount: Int
    var coverRelativePath: String?

    var mode: AlbumMode {
        get { AlbumMode(rawValue: modeRaw) ?? .combo }
        set { modeRaw = newValue.rawValue }
    }

    init(
        id: String,
        title: String,
        mode: AlbumMode = .combo,
        updatedAtRemote: String,
        installedAt: Date = Date(),
        lastOpenedAt: Date? = nil,
        itemCount: Int,
        coverRelativePath: String? = nil
    ) {
        self.id = id
        self.title = title
        self.modeRaw = mode.rawValue
        self.updatedAtRemote = updatedAtRemote
        self.installedAt = installedAt
        self.lastOpenedAt = lastOpenedAt
        self.itemCount = itemCount
        self.coverRelativePath = coverRelativePath
    }
}
