Commit 591d74e7 authored by Amirjanyan's avatar Amirjanyan
Browse files

ItemRecord: json serializable

parent 1be66e65
Showing with 89 additions and 12 deletions
+89 -12
......@@ -12,6 +12,11 @@ import '../AppController.dart';
import 'DatabaseController.dart';
import 'ItemPropertyRecord.dart';
import 'package:json_annotation/json_annotation.dart';
part 'ItemRecord.g.dart';
@JsonSerializable()
class ItemRecord with EquatableMixin {
int? rowId;
String uid;
......@@ -26,10 +31,10 @@ class ItemRecord with EquatableMixin {
ItemRecord(
{this.rowId,
uid,
String? uid,
required this.type,
dateCreated,
dateModified,
DateTime? dateCreated,
DateTime? dateModified,
this.deleted = false,
this.syncState = SyncState.create,
this.syncHasPriority = false})
......@@ -50,15 +55,16 @@ class ItemRecord with EquatableMixin {
ItemsCompanion toCompanion() {
return ItemsCompanion(
rowId: rowId == null ? const Value.absent() : Value(rowId),
id: Value(uid),
type: Value(type),
dateCreated: Value(dateCreated),
dateModified: Value(dateModified),
dateServerModified:
dateServerModified == null ? const Value.absent() : Value(dateServerModified),
deleted: Value(deleted),
);
rowId: rowId == null ? const Value.absent() : Value(rowId!),
id: Value(uid),
type: Value(type),
dateCreated: Value(dateCreated),
dateModified: Value(dateModified),
dateServerModified:
dateServerModified == null ? const Value.absent() : Value(dateServerModified),
deleted: Value(deleted),
syncState: Value(syncState.inString),
syncHasPriority: Value(syncHasPriority));
}
Future<ItemPropertyRecord?> property(String name, [DatabaseController? db]) async {
......@@ -261,6 +267,9 @@ class ItemRecord with EquatableMixin {
}
}
factory ItemRecord.fromJson(Map<String, dynamic> json) => _$ItemRecordFromJson(json);
Map<String, dynamic> toJson() => _$ItemRecordToJson(this);
@override
List<Object> get props => [uid, type];
......
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'ItemRecord.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
ItemRecord _$ItemRecordFromJson(Map<String, dynamic> json) {
return ItemRecord(
rowId: json['rowId'] as int?,
uid: json['uid'] as String?,
type: json['type'] as String,
dateCreated: json['dateCreated'] == null ? null : DateTime.parse(json['dateCreated'] as String),
dateModified:
json['dateModified'] == null ? null : DateTime.parse(json['dateModified'] as String),
deleted: json['deleted'] as bool,
syncState: _$enumDecode(_$SyncStateEnumMap, json['syncState']),
syncHasPriority: json['syncHasPriority'] as bool,
)..dateServerModified = json['dateServerModified'] == null
? null
: DateTime.parse(json['dateServerModified'] as String);
}
Map<String, dynamic> _$ItemRecordToJson(ItemRecord instance) => <String, dynamic>{
'rowId': instance.rowId,
'uid': instance.uid,
'type': instance.type,
'dateCreated': instance.dateCreated.toIso8601String(),
'dateServerModified': instance.dateServerModified?.toIso8601String(),
'dateModified': instance.dateModified.toIso8601String(),
'deleted': instance.deleted,
'syncState': _$SyncStateEnumMap[instance.syncState],
'syncHasPriority': instance.syncHasPriority,
};
K _$enumDecode<K, V>(
Map<K, V> enumValues,
Object? source, {
K? unknownValue,
}) {
if (source == null) {
throw ArgumentError(
'A value must be provided. Supported values: '
'${enumValues.values.join(', ')}',
);
}
return enumValues.entries.singleWhere(
(e) => e.value == source,
orElse: () {
if (unknownValue == null) {
throw ArgumentError(
'`$source` is not one of the supported values: '
'${enumValues.values.join(', ')}',
);
}
return MapEntry(unknownValue, enumValues.values.first);
},
).key;
}
const _$SyncStateEnumMap = {
SyncState.create: 'create',
SyncState.update: 'update',
SyncState.noChanges: 'noChanges',
SyncState.failed: 'failed',
};
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment