1+ import 'dart:async' ;
2+ import 'dart:convert' ;
13
24import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart' ;
5+ import 'package:gsy_github_app_flutter/common/config/Config.dart' ;
6+ import 'package:gsy_github_app_flutter/common/model/Repository.dart' ;
7+ import 'package:sqflite/sqflite.dart' ;
38
49/**
510 * 本地已读历史表
@@ -16,11 +21,13 @@ class ReadHistoryDbProvider extends BaseDbProvider {
1621
1722 int id;
1823 String fullName;
19- DateTime readDate;
24+ int readDate;
2025 String data;
2126
22- Map <String , dynamic > toMap () {
23- Map <String , dynamic > map = {columnFullName: fullName, columnReadDate: readDate, columnData: data};
27+ ReadHistoryDbProvider ();
28+
29+ Map <String , dynamic > toMap (String fullName, DateTime readDate, String data) {
30+ Map <String , dynamic > map = {columnFullName: fullName, columnReadDate: readDate.millisecondsSinceEpoch, columnData: data};
2431 if (id != null ) {
2532 map[columnId] = id;
2633 }
@@ -35,12 +42,69 @@ class ReadHistoryDbProvider extends BaseDbProvider {
3542 }
3643
3744 @override
38- tableSqlString () {}
45+ tableSqlString () {
46+ return tableBaseString (name, columnId) +
47+ '''
48+ $columnFullName text not null,
49+ $columnReadDate int not null,
50+ $columnData text not null)
51+ ''' ;
52+ }
3953
4054 @override
4155 tableName () {
4256 return name;
4357 }
44- }
4558
59+ Future _getProvider (Database db, int page) async {
60+ List <Map <String , dynamic >> maps = await db.query (name,
61+ columns: [columnId, columnFullName, columnReadDate, columnData],
62+ limit: Config .PAGE_SIZE ,
63+ offset: (page - 1 ) * Config .PAGE_SIZE ,
64+ orderBy: "$columnReadDate DESC" );
65+ if (maps.length > 0 ) {
66+ return maps;
67+ }
68+ return null ;
69+ }
70+
71+ Future _getProviderInsert (Database db, String fullName) async {
72+ List <Map <String , dynamic >> maps = await db.query (
73+ name,
74+ columns: [columnId, columnFullName, columnReadDate, columnData],
75+ where: "$columnFullName = ?" ,
76+ whereArgs: [fullName],
77+ );
78+ if (maps.length > 0 ) {
79+ ReadHistoryDbProvider provider = ReadHistoryDbProvider .fromMap (maps.first);
80+ return provider;
81+ }
82+ return null ;
83+ }
84+
85+ ///插入到数据库
86+ Future insert (String fullName, DateTime dateTime, String dataMapString) async {
87+ Database db = await getDataBase ();
88+ var provider = await _getProviderInsert (db, fullName);
89+ if (provider != null ) {
90+ await db.delete (name, where: "$columnFullName = ?" , whereArgs: [fullName]);
91+ }
92+ return await db.insert (name, toMap (fullName, dateTime, dataMapString));
93+ }
4694
95+ ///获取事件数据
96+ Future <List <Repository >> geData (int page) async {
97+ Database db = await getDataBase ();
98+ var provider = await _getProvider (db, page);
99+ if (provider != null ) {
100+ List <Repository > list = new List ();
101+ for (var providerMap in provider) {
102+ ReadHistoryDbProvider provider = ReadHistoryDbProvider .fromMap (providerMap);
103+ Map map = json.decode (provider.data);
104+ list.add (Repository .fromJson (map));
105+ }
106+ return list;
107+ }
108+ return null ;
109+ }
110+ }
0 commit comments