syncable.dart 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import 'package:vital_local_database/core/interface/entity.dart';
  2. import 'package:vital_local_database/core/sqlite/entity.dart';
  3. import 'defines.dart';
  4. /// 可以同步实体
  5. abstract class SyncableEntity<T extends BaseEntity> extends BaseEntity<T> {
  6. /// 唯一编码
  7. String code = '';
  8. ///用户编码
  9. String userCode = '';
  10. /// 数据Json
  11. String dataJson = '';
  12. /// 同步类型
  13. OfflineDataSyncType syncType = OfflineDataSyncType.create;
  14. /// 同步状态
  15. OfflineDataSyncState syncState = OfflineDataSyncState.wait;
  16. @override
  17. Map<String, dynamic> toJson() {
  18. final map = super.toJson();
  19. map['code'] = code;
  20. map['userCode'] = userCode;
  21. map['dataJson'] = dataJson;
  22. map['syncType'] = syncType.index;
  23. map['syncState'] = syncState.index;
  24. return map;
  25. }
  26. @override
  27. T fromJson(Map<String, dynamic> map) {
  28. final T entity = super.fromJson(map);
  29. code = map['code'];
  30. userCode = map['userCode'];
  31. dataJson = map['dataJson'];
  32. syncType = OfflineDataSyncType.values[map["syncType"]];
  33. syncState = OfflineDataSyncState.values[map["syncState"]];
  34. return entity;
  35. }
  36. }
  37. abstract class SyncableColumnsDefine<T extends BaseEntity>
  38. extends BaseColumnsDefine<T> implements IDbColumnsDefine<T> {
  39. final code = DbColumn<String>("code");
  40. final userCode = DbColumn('userCode');
  41. final dataJson = DbColumn<String>("dataJson");
  42. final syncType = DbColumn<OfflineDataSyncType>("syncType");
  43. final syncState = DbColumn<OfflineDataSyncState>("syncState");
  44. }