1+ import 'dart:async' ;
2+ import 'dart:convert' ;
3+
14import '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+ }
0 commit comments