import 'package:freezed_annotation/freezed_annotation.dart'; part 'folder.freezed.dart'; part 'folder.g.dart'; // Timestamp converter for Unix timestamps class TimestampConverter implements JsonConverter { const TimestampConverter(); @override DateTime fromJson(dynamic json) { if (json is String) { return DateTime.parse(json); } else if (json is int) { return DateTime.fromMillisecondsSinceEpoch(json * 1000); } else { throw ArgumentError('Invalid date format: $json'); } } @override dynamic toJson(DateTime object) { return object.millisecondsSinceEpoch ~/ 1000; } } @freezed sealed class Folder with _$Folder { const factory Folder({ required String id, required String name, @TimestampConverter() required DateTime createdAt, @TimestampConverter() required DateTime updatedAt, String? parentId, @Default([]) List conversationIds, @Default([]) List subfolders, @Default({}) Map metadata, }) = _Folder; factory Folder.fromJson(Map json) => _$FolderFromJson(json); }