7 changed files with 202 additions and 76 deletions
@ -0,0 +1,49 @@ |
|||
import 'dart:async'; |
|||
import 'package:path/path.dart'; |
|||
import 'package:sqflite/sqflite.dart'; |
|||
|
|||
class DatabaseHelper { |
|||
static final DatabaseHelper _instance = DatabaseHelper._internal(); |
|||
factory DatabaseHelper() => _instance; |
|||
static Database? _database; |
|||
|
|||
DatabaseHelper._internal(); |
|||
|
|||
Future<Database> get database async { |
|||
if (_database != null) return _database!; |
|||
_database = await _initDatabase(); |
|||
return _database!; |
|||
} |
|||
|
|||
Future<Database> _initDatabase() async { |
|||
String path = join( |
|||
await getDatabasesPath(), |
|||
'database.db', |
|||
); |
|||
return await openDatabase(path, version: 1, onCreate: _createDB); |
|||
} |
|||
|
|||
Future<void> _createDB(Database db, int version) async { |
|||
final batch = db.batch(); |
|||
// 商务会议助手列表 |
|||
batch.execute(''' |
|||
CREATE TABLE IF NOT EXISTS meeting ( |
|||
id INTEGER PRIMARY KEY, |
|||
title TEXT, |
|||
content TEXT, |
|||
seconds INTEGER, |
|||
creationtime INTEGER |
|||
) |
|||
'''); |
|||
// 商务会议助手详情内容 |
|||
batch.execute(''' |
|||
CREATE TABLE IF NOT EXISTS meetingdetails ( |
|||
id INTEGER PRIMARY KEY, |
|||
meetingid INTEGER, |
|||
audio BLOB, |
|||
content TEXT |
|||
) |
|||
'''); |
|||
await batch.commit(); |
|||
} |
|||
} |
|||
@ -0,0 +1,111 @@ |
|||
import 'package:get/get.dart'; |
|||
|
|||
import 'database_helper.dart'; |
|||
|
|||
class SqfliteApi { |
|||
// 获取商务会议助手列表 |
|||
static Future getMeetingList(int page) async { |
|||
final db = await DatabaseHelper().database; |
|||
return await db.query( |
|||
'meeting', |
|||
limit: 10, |
|||
offset: (page - 1) * 10, |
|||
orderBy: 'creationtime DESC', |
|||
); |
|||
} |
|||
|
|||
// 获取商务会议助手详情 |
|||
static Future getMeetingDetails(id) async { |
|||
final db = await DatabaseHelper().database; |
|||
List meetingList = |
|||
await db.query('meeting', where: 'id = ?', whereArgs: [id]); |
|||
List detailsList = await db.query( |
|||
'meetingdetails', |
|||
where: 'meetingid = ?', |
|||
whereArgs: [id], |
|||
); |
|||
return <String, dynamic>{ |
|||
...meetingList.first, |
|||
'details': detailsList.first |
|||
}; |
|||
} |
|||
|
|||
// 插入商务会议助手 |
|||
static Future insertMeeting(Map<String, Object?> meeting) async { |
|||
final db = await DatabaseHelper().database; |
|||
try { |
|||
int id = 0; |
|||
await db.transaction((txn) async { |
|||
id = await txn.insert('meeting', { |
|||
'title': meeting['title'], |
|||
'content': meeting['firstContent'], |
|||
'seconds': meeting['seconds'], |
|||
'creationtime': meeting['creationTime'], |
|||
}); |
|||
await txn.insert('meetingdetails', { |
|||
'meetingid': id, |
|||
'audio': meeting['audio'], |
|||
'content': meeting['content'], |
|||
}); |
|||
}); |
|||
return id; |
|||
} catch (e) { |
|||
Get.snackbar( |
|||
'error'.tr, // 错误 |
|||
'unknownError'.tr, |
|||
snackPosition: SnackPosition.TOP, |
|||
); |
|||
return; |
|||
} |
|||
} |
|||
|
|||
// 修改商务会议助手 |
|||
static Future editMeeting(id, Map<String, Object?> meeting) async { |
|||
final db = await DatabaseHelper().database; |
|||
try { |
|||
await db.transaction((txn) async { |
|||
await txn.update( |
|||
'meeting', |
|||
{ |
|||
'title': meeting['title'], |
|||
'content': meeting['firstContent'], |
|||
'seconds': meeting['seconds'], |
|||
}, |
|||
where: 'id = ?', |
|||
whereArgs: [id], |
|||
); |
|||
await txn.update( |
|||
'meetingdetails', |
|||
{'content': meeting['content']}, |
|||
where: 'meetingid = ?', |
|||
whereArgs: [id], |
|||
); |
|||
}); |
|||
return true; |
|||
} catch (e) { |
|||
Get.snackbar( |
|||
'error'.tr, // 错误 |
|||
'unknownError'.tr, |
|||
snackPosition: SnackPosition.TOP, |
|||
); |
|||
return; |
|||
} |
|||
} |
|||
|
|||
// 修改商务会议助手标题 |
|||
static Future editMeetingTitle(id, title) async { |
|||
final db = await DatabaseHelper().database; |
|||
await db.update('meeting', {'title': title}, |
|||
where: 'id = ?', whereArgs: [id]); |
|||
} |
|||
|
|||
// 删除商务会议助手 |
|||
static Future deleteMeeting(id) async { |
|||
final db = await DatabaseHelper().database; |
|||
await db.transaction((txn) async { |
|||
await txn.delete('meeting', where: 'id = ?', whereArgs: [id]); |
|||
await txn |
|||
.delete('meetingdetails', where: 'meetingid = ?', whereArgs: [id]); |
|||
}); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue