import 'package:tunas/repositories/metadata/models/budget.dart'; import 'package:tunas/repositories/metadata/models/category.dart'; import 'package:tunas/repositories/json/models/json.dart'; import 'package:tunas/repositories/metadata/models/account.dart'; class Metadata implements Json { List budgets; List categories; List accounts; Metadata({ this.budgets = const [], this.categories = const [], this.accounts = const [], }); @override Map toJson() => { 'budgets': budgets.map((budget) => budget.toJson()).toList(), 'categories': categories.map((category) => category.toJson()).toList(), 'accounts': accounts.map((account) => account.toJson()).toList(), }; @override String getJsonFileName() { return 'metadata.json'; } } class MetadataFactory implements JsonFactory { @override Metadata fromJson(Map json) { return Metadata( budgets: List.from(json['budgets']?.map((budget) => Budget.fromJson(budget))), categories: List.from(json['categories']?.map((category) => Category.fromJson(category))), accounts: List.from(json['accounts']?.map((account) => Account.fromJson(account))), ); } }