You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.2 KiB
130 lines
3.2 KiB
import 'dart:async';
|
|
import 'package:get_storage/get_storage.dart';
|
|
import 'package:path/path.dart';
|
|
import 'package:sqflite/sqflite.dart';
|
|
|
|
class DatabaseHelper {
|
|
static final DatabaseHelper _instance = DatabaseHelper._internal();
|
|
factory DatabaseHelper() => _instance;
|
|
static Database? _database;
|
|
static String _userId = '';
|
|
|
|
DatabaseHelper._internal();
|
|
|
|
Future<Database> get database async {
|
|
if (_database != null) return _database!;
|
|
_database = await _initDatabase();
|
|
return _database!;
|
|
}
|
|
|
|
Future<Database> _initDatabase() async {
|
|
final GetStorage storage = GetStorage();
|
|
Map? userInfo = storage.read("user_info");
|
|
if (userInfo != null) {
|
|
_userId = userInfo['user']['uid'];
|
|
} else {
|
|
_userId = '';
|
|
}
|
|
String path = join(
|
|
await getDatabasesPath(),
|
|
_userId.isNotEmpty ? '${_userId}database1.db' : 'database1.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 user (
|
|
id TEXT PRIMARY KEY,
|
|
synctime INTEGER,
|
|
privatecloud INTEGER
|
|
)
|
|
''');
|
|
// 商务会议助手列表
|
|
batch.execute('''
|
|
CREATE TABLE IF NOT EXISTS meeting (
|
|
id INTEGER PRIMARY KEY,
|
|
title TEXT,
|
|
type TEXT,
|
|
seconds INTEGER,
|
|
filepath TEXT,
|
|
audiourl TEXT,
|
|
tasktype INTEGER,
|
|
creationtime INTEGER
|
|
)
|
|
''');
|
|
// 商务会议助手详情内容
|
|
batch.execute('''
|
|
CREATE TABLE IF NOT EXISTS meetingdetails (
|
|
id INTEGER PRIMARY KEY,
|
|
meetingid INTEGER,
|
|
address TEXT,
|
|
personnel TEXT,
|
|
taskid TEXT,
|
|
tasktype INTEGER,
|
|
overview TEXT,
|
|
summary TEXT,
|
|
mindmap TEXT
|
|
)
|
|
''');
|
|
// 商务会议助手转写内容
|
|
batch.execute('''
|
|
CREATE TABLE IF NOT EXISTS meetingspeaker (
|
|
id INTEGER PRIMARY KEY,
|
|
meetingid INTEGER,
|
|
content TEXT,
|
|
starttime INTEGER,
|
|
endtime INTEGER,
|
|
speaker TEXT
|
|
)
|
|
''');
|
|
// 商务会议助手Ask AI
|
|
batch.execute('''
|
|
CREATE TABLE IF NOT EXISTS meetingai (
|
|
id INTEGER PRIMARY KEY,
|
|
meetingid INTEGER,
|
|
user TEXT,
|
|
assistant TEXT,
|
|
cruxtext TEXT
|
|
)
|
|
''');
|
|
// 商务会议助手模版分类
|
|
batch.execute('''
|
|
CREATE TABLE IF NOT EXISTS meetingcategorytemplate (
|
|
id INTEGER PRIMARY KEY,
|
|
name TEXT,
|
|
language TEXT
|
|
)
|
|
''');
|
|
// 商务会议助手模版
|
|
batch.execute('''
|
|
CREATE TABLE IF NOT EXISTS meetingtemplate (
|
|
id INTEGER PRIMARY KEY,
|
|
tid TEXT,
|
|
categoryid INTEGER,
|
|
name TEXT,
|
|
icon TEXT,
|
|
tag TEXT,
|
|
desc TEXT,
|
|
outline TEXT,
|
|
prompt TEXT,
|
|
language TEXT
|
|
)
|
|
''');
|
|
batch.insert('user', {
|
|
'id': _userId,
|
|
'synctime': 0,
|
|
'privatecloud': 0,
|
|
});
|
|
await batch.commit();
|
|
}
|
|
|
|
Future<void> close() async {
|
|
if (_database != null) {
|
|
await _database!.close();
|
|
_database = null;
|
|
}
|
|
}
|
|
}
|
|
|