Refactored json storage
This commit is contained in:
39
lib/repositories/metadata/models/metadata.dart
Normal file
39
lib/repositories/metadata/models/metadata.dart
Normal file
@@ -0,0 +1,39 @@
|
||||
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<Budget> budgets;
|
||||
List<Category> categories;
|
||||
List<Account> accounts;
|
||||
|
||||
Metadata({
|
||||
this.budgets = const [],
|
||||
this.categories = const [],
|
||||
this.accounts = const [],
|
||||
});
|
||||
|
||||
@override
|
||||
Map<String, dynamic> 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<Metadata> {
|
||||
@override
|
||||
Metadata fromJson(Map<String, dynamic> json) {
|
||||
return Metadata(
|
||||
budgets: List<Budget>.from(json['budgets']?.map((budget) => Budget.fromJson(budget))),
|
||||
categories: List<Category>.from(json['categories']?.map((category) => Category.fromJson(category))),
|
||||
accounts: List<Account>.from(json['accounts']?.map((account) => Account.fromJson(account))),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user