Skip to content

Commit 6eb6a3d

Browse files
committed
repos event db
1 parent 07acfca commit 6eb6a3d

File tree

4 files changed

+97
-18
lines changed

4 files changed

+97
-18
lines changed

lib/common/ab/provider/repos/RepositoryEventDbProvider.dart

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
import 'dart:async';
2+
import 'dart:convert';
3+
14
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
5+
import 'package:gsy_github_app_flutter/common/model/Event.dart';
6+
import 'package:sqflite/sqflite.dart';
27

38
/**
49
* 仓库活跃事件表
@@ -17,7 +22,9 @@ class RepositoryEventDbProvider extends BaseDbProvider {
1722
String fullName;
1823
String data;
1924

20-
Map<String, dynamic> toMap() {
25+
RepositoryEventDbProvider();
26+
27+
Map<String, dynamic> toMap(String fullName, String data) {
2128
Map<String, dynamic> map = {columnFullName: fullName, columnData: data};
2229
if (id != null) {
2330
map[columnId] = id;
@@ -32,10 +39,54 @@ class RepositoryEventDbProvider extends BaseDbProvider {
3239
}
3340

3441
@override
35-
tableSqlString() {}
42+
tableSqlString() {
43+
return tableBaseString(name, columnId) +
44+
'''
45+
$columnFullName text not null,
46+
$columnData text not null)
47+
''';
48+
}
3649

3750
@override
3851
tableName() {
3952
return name;
4053
}
54+
55+
Future _getProvider(Database db, String fullName) async {
56+
List<Map<String, dynamic>> maps =
57+
await db.query(name, columns: [columnId, columnFullName, columnData], where: "$columnFullName = ?", whereArgs: [fullName]);
58+
if (maps.length > 0) {
59+
RepositoryEventDbProvider provider = RepositoryEventDbProvider.fromMap(maps.first);
60+
return provider;
61+
}
62+
return null;
63+
}
64+
65+
///插入到数据库
66+
Future insert(String fullName, String dataMapString) async {
67+
Database db = await getDataBase();
68+
var provider = await _getProvider(db, fullName);
69+
if (provider != null) {
70+
await db.delete(name, where: "$columnFullName = ?", whereArgs: [fullName]);
71+
}
72+
return await db.insert(name, toMap(fullName, dataMapString));
73+
}
74+
75+
///获取事件数据
76+
Future<List<Event>> getEvents(String fullName) async {
77+
Database db = await getDataBase();
78+
79+
var provider = await _getProvider(db, fullName);
80+
if (provider != null) {
81+
List<Event> list = new List();
82+
List<dynamic> eventMap = json.decode(provider.data);
83+
if (eventMap.length > 0) {
84+
for (var item in eventMap) {
85+
list.add(Event.fromJson(item));
86+
}
87+
}
88+
return list;
89+
}
90+
return null;
91+
}
4192
}

lib/common/dao/ReposDao.dart

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:fluttertoast/fluttertoast.dart';
77
import 'package:get_version/get_version.dart';
88
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryDetailDbProvider.dart';
99
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryDetailReadmeDbProvider.dart';
10+
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryEventDbProvider.dart';
1011
import 'package:gsy_github_app_flutter/common/ab/provider/repos/TrendRepositoryDbProvider.dart';
1112
import 'package:gsy_github_app_flutter/common/config/Config.dart';
1213
import 'package:gsy_github_app_flutter/common/dao/DaoResult.dart';
@@ -112,22 +113,40 @@ class ReposDao {
112113
/**
113114
* 仓库活动事件
114115
*/
115-
static getRepositoryEventDao(userName, reposName, {page = 0, branch = "master"}) async {
116-
String url = Address.getReposEvent(userName, reposName) + Address.getPageParams("?", page);
117-
var res = await HttpManager.netFetch(url, null, null, null);
118-
if (res != null && res.result) {
119-
List<Event> list = new List();
120-
var data = res.data;
121-
if (data == null || data.length == 0) {
116+
static getRepositoryEventDao(userName, reposName, {page = 0, branch = "master", needDb = false}) async {
117+
String fullName = userName + "/" + reposName;
118+
RepositoryEventDbProvider provider = new RepositoryEventDbProvider();
119+
120+
next() async {
121+
String url = Address.getReposEvent(userName, reposName) + Address.getPageParams("?", page);
122+
var res = await HttpManager.netFetch(url, null, null, null);
123+
if (res != null && res.result) {
124+
List<Event> list = new List();
125+
var data = res.data;
126+
if (data == null || data.length == 0) {
127+
return new DataResult(null, false);
128+
}
129+
for (int i = 0; i < data.length; i++) {
130+
list.add(Event.fromJson(data[i]));
131+
}
132+
if (needDb) {
133+
provider.insert(fullName, json.encode(data));
134+
}
135+
return new DataResult(list, true);
136+
} else {
122137
return new DataResult(null, false);
123138
}
124-
for (int i = 0; i < data.length; i++) {
125-
list.add(Event.fromJson(data[i]));
139+
}
140+
141+
if (needDb) {
142+
List<Event> list = await provider.getEvents(fullName);
143+
if (list == null) {
144+
return await next();
126145
}
127-
return new DataResult(list, true);
128-
} else {
129-
return new DataResult(null, false);
146+
DataResult dataResult = new DataResult(list, true, next: next());
147+
return dataResult;
130148
}
149+
return await next();
131150
}
132151

133152
/**

lib/page/RepositoryDetailPage.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import 'dart:async';
2-
31
import 'package:flutter/material.dart';
42
import 'package:gsy_github_app_flutter/common/dao/ReposDao.dart';
53
import 'package:gsy_github_app_flutter/common/style/GSYStyle.dart';

lib/page/RepostoryDetailInfoPage.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,20 @@ class ReposDetailInfoPageState extends GSYListState<ReposDetailInfoPage> {
7878

7979
_getDataLogic() async {
8080
if (selectIndex == 1) {
81-
return await ReposDao.getReposCommitsDao(userName, reposName, page: page, branch: reposDetailParentControl.currentBranch);
81+
return await ReposDao.getReposCommitsDao(
82+
userName,
83+
reposName,
84+
page: page,
85+
branch: reposDetailParentControl.currentBranch,
86+
);
8287
}
83-
return await ReposDao.getRepositoryEventDao(userName, reposName, page: page, branch: reposDetailParentControl.currentBranch);
88+
return await ReposDao.getRepositoryEventDao(
89+
userName,
90+
reposName,
91+
page: page,
92+
branch: reposDetailParentControl.currentBranch,
93+
needDb: page <= 1,
94+
);
8495
}
8596

8697
_getReposDetail() {

0 commit comments

Comments
 (0)