Skip to content

Commit 9050f49

Browse files
committed
repos commit db
1 parent 6eb6a3d commit 9050f49

File tree

3 files changed

+92
-16
lines changed

3 files changed

+92
-16
lines changed

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

Lines changed: 59 additions & 4 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/RepoCommit.dart';
6+
import 'package:sqflite/sqflite.dart';
27

38
/**
49
* 仓库提交信息表
@@ -10,14 +15,18 @@ class RepositoryCommitsDbProvider extends BaseDbProvider {
1015
final String name = 'RepositoryCommits';
1116
final String columnId = "_id";
1217
final String columnFullName = "fullName";
18+
final String columnBranch = "branch";
1319
final String columnData = "data";
1420

1521
int id;
1622
String fullName;
1723
String data;
24+
String branch;
25+
26+
RepositoryCommitsDbProvider();
1827

19-
Map<String, dynamic> toMap() {
20-
Map<String, dynamic> map = {columnFullName: fullName, columnData: data};
28+
Map<String, dynamic> toMap(String fullName, String branch, String data) {
29+
Map<String, dynamic> map = {columnFullName: fullName, columnBranch: branch, columnData: data};
2130
if (id != null) {
2231
map[columnId] = id;
2332
}
@@ -27,14 +36,60 @@ class RepositoryCommitsDbProvider extends BaseDbProvider {
2736
RepositoryCommitsDbProvider.fromMap(Map map) {
2837
id = map[columnId];
2938
fullName = map[columnFullName];
39+
branch = map[columnBranch];
3040
data = map[columnData];
3141
}
3242

3343
@override
34-
tableSqlString() {}
44+
tableSqlString() {
45+
return tableBaseString(name, columnId) +
46+
'''
47+
$columnFullName text not null,
48+
$columnBranch text not null,
49+
$columnData text not null)
50+
''';
51+
}
3552

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

lib/common/dao/ReposDao.dart

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'dart:io';
55
import 'package:dio/dio.dart';
66
import 'package:fluttertoast/fluttertoast.dart';
77
import 'package:get_version/get_version.dart';
8+
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryCommitsDbProvider.dart';
89
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryDetailDbProvider.dart';
910
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryDetailReadmeDbProvider.dart';
1011
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryEventDbProvider.dart';
@@ -164,22 +165,41 @@ class ReposDao {
164165
/**
165166
* 获取仓库的提交列表
166167
*/
167-
static getReposCommitsDao(userName, reposName, {page = 0, branch = "master"}) async {
168-
String url = Address.getReposCommits(userName, reposName) + Address.getPageParams("?", page) + "&sha=" + branch;
169-
var res = await HttpManager.netFetch(url, null, null, null);
170-
if (res != null && res.result) {
171-
List<RepoCommit> list = new List();
172-
var data = res.data;
173-
if (data == null || data.length == 0) {
168+
static getReposCommitsDao(userName, reposName, {page = 0, branch = "master", needDb = false}) async {
169+
String fullName = userName + "/" + reposName;
170+
171+
RepositoryCommitsDbProvider provider = new RepositoryCommitsDbProvider();
172+
173+
next() async {
174+
String url = Address.getReposCommits(userName, reposName) + Address.getPageParams("?", page) + "&sha=" + branch;
175+
var res = await HttpManager.netFetch(url, null, null, null);
176+
if (res != null && res.result) {
177+
List<RepoCommit> list = new List();
178+
var data = res.data;
179+
if (data == null || data.length == 0) {
180+
return new DataResult(null, false);
181+
}
182+
for (int i = 0; i < data.length; i++) {
183+
list.add(RepoCommit.fromJson(data[i]));
184+
}
185+
if (needDb) {
186+
provider.insert(fullName, branch, json.encode(data));
187+
}
188+
return new DataResult(list, true);
189+
} else {
174190
return new DataResult(null, false);
175191
}
176-
for (int i = 0; i < data.length; i++) {
177-
list.add(RepoCommit.fromJson(data[i]));
192+
}
193+
194+
if (needDb) {
195+
List<RepoCommit> list = await provider.getData(fullName, branch);
196+
if (list == null) {
197+
return await next();
178198
}
179-
return new DataResult(list, true);
180-
} else {
181-
return new DataResult(null, false);
199+
DataResult dataResult = new DataResult(list, true, next: next());
200+
return dataResult;
182201
}
202+
return await next();
183203
}
184204

185205
/***

lib/page/RepostoryDetailInfoPage.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class ReposDetailInfoPageState extends GSYListState<ReposDetailInfoPage> {
8383
reposName,
8484
page: page,
8585
branch: reposDetailParentControl.currentBranch,
86+
needDb: page <= 1,
8687
);
8788
}
8889
return await ReposDao.getRepositoryEventDao(

0 commit comments

Comments
 (0)