// SPDX-FileCopyrightText: (C) 2024 Matyáš Caras // // SPDX-License-Identifier: AGPL-3.0-only import 'package:json_annotation/json_annotation.dart'; import 'package:prasule/api/category.dart'; import 'package:prasule/api/entry_data.dart'; part 'wallet_entry.g.dart'; @JsonSerializable() /// This is an entry containing a single item class WalletSingleEntry { /// This is an entry containing a single item WalletSingleEntry({ required this.data, required this.type, required this.date, required this.category, required this.id, }); /// Generates a class instance from a Map factory WalletSingleEntry.fromJson(Map json) => _$WalletSingleEntryFromJson(json); /// Expense or income @JsonKey(defaultValue: EntryType.expense) EntryType type; /// Actual entry data @JsonKey(defaultValue: EntryData.unknown) EntryData data; /// Date of entry creation @JsonKey(defaultValue: DateTime.now) DateTime date; /// Selected category @JsonKey(defaultValue: WalletCategory.unknown) WalletCategory category; /// Unique entry ID @JsonKey(required: true, disallowNullValue: true) final int id; /// Converts the data in this instance into a Map Map toJson() => _$WalletSingleEntryToJson(this); }