/// Data model representing a sheet music document.
///
/// A [Sheet] contains metadata about a piece of sheet music,
/// including its title, composer information, and timestamps.
class Sheet {
  final String uuid;
  String name;
  String composer;
  DateTime updatedAt;
  bool availableOffline;

  Sheet({
    required this.uuid,
    required this.name,
    required this.composer,
    required this.updatedAt,
    this.availableOffline = false,
  });

  /// Creates a [Sheet] from a JSON map returned by the API.
  factory Sheet.fromJson(Map<String, dynamic> json) {
    return Sheet(
      uuid: json['uuid'],
      name: json['title'],
      composer: json['composer'],
      updatedAt: DateTime.parse(json['updated_at']),
    );
  }

  /// Converts this sheet to a JSON map for API requests.
  Map<String, dynamic> toJson() => {
    'uuid': uuid,
    'title': name,
    'composer': composer,
    'updated_at': updatedAt.toIso8601String(),
  };
}
