import Foundation
import SwiftData

@Model
final class CatalogEntry {
    @Attribute(.unique) var id: String
    var name: String
    var series: String?
    var kindRaw: String
    var relativePath: String
    var importedAt: Date

    var kind: ResourceKind {
        get { ResourceKind(rawValue: kindRaw) ?? .other }
        set { kindRaw = newValue.rawValue }
    }

    init(
        id: String = CatalogEntry.makeID(),
        name: String,
        series: String? = nil,
        kind: ResourceKind,
        relativePath: String,
        importedAt: Date = Date()
    ) {
        self.id = id
        self.name = name
        self.series = series
        self.kindRaw = kind.rawValue
        self.relativePath = relativePath
        self.importedAt = importedAt
    }

    static func makeID() -> String {
        "res_\(Int(Date().timeIntervalSince1970 * 1_000_000))"
    }
}
