本次提交包含大量代码优化、功能新增与服务端配置更新: 1. 修复分析报告统计数据,调整CMake策略设置 2. 优化APP权限配置、编辑器与聊天界面组件 3. 更新依赖库版本与pubspec配置 4. 新增文件传输服务端、信令服务器相关配置与脚本 5. 完善用户注销功能与数据库迁移脚本 6. 优化多处动画效果、代码风格与日志输出 7. 新增多种调试与部署脚本,修复已知BUG
118 lines
5.2 KiB
Dart
118 lines
5.2 KiB
Dart
// ============================================================
|
|
// 闲言APP — 文件传输助手数据库表定义
|
|
// 创建时间: 2026-05-09
|
|
// 更新时间: 2026-05-10
|
|
// 作用: 文件传输助手Drift表 — 设备/传输记录/配对记录/传输消息
|
|
// 上次更新: 添加isFavorite字段
|
|
// ============================================================
|
|
|
|
import 'package:drift/drift.dart';
|
|
|
|
// ============================================================
|
|
// 传输设备表 — 已发现的设备和已配对设备
|
|
// ============================================================
|
|
|
|
class TransferDevices extends Table {
|
|
TextColumn get id => text()();
|
|
TextColumn get alias => text()();
|
|
TextColumn get deviceModel => text().nullable()();
|
|
TextColumn get deviceType => text().withDefault(const Constant('mobile'))();
|
|
TextColumn get ip => text().nullable()();
|
|
IntColumn get port => integer().withDefault(const Constant(53317))();
|
|
TextColumn get pairingMethod => text().withDefault(const Constant('lan'))();
|
|
TextColumn get preferredTransport => text().withDefault(const Constant('localsend_http'))();
|
|
BoolColumn get isOnline => boolean().withDefault(const Constant(false))();
|
|
BoolColumn get isVerified => boolean().withDefault(const Constant(false))();
|
|
BoolColumn get isFavorite => boolean().withDefault(const Constant(false))();
|
|
TextColumn get publicKey => text().nullable()();
|
|
TextColumn get fingerprint => text().nullable()();
|
|
DateTimeColumn get lastSeen => dateTime()();
|
|
DateTimeColumn get createdAt => dateTime()();
|
|
DateTimeColumn get updatedAt => dateTime()();
|
|
|
|
@override
|
|
Set<Column> get primaryKey => {id};
|
|
}
|
|
|
|
// ============================================================
|
|
// 传输记录表 — 所有传输任务的持久化
|
|
// ============================================================
|
|
|
|
class TransferRecords extends Table {
|
|
TextColumn get id => text()();
|
|
TextColumn get sessionId => text()();
|
|
TextColumn get peerId => text()();
|
|
TextColumn get peerAlias => text().withDefault(const Constant(''))();
|
|
TextColumn get transport => text().withDefault(const Constant('localsend_http'))();
|
|
TextColumn get direction => text().withDefault(const Constant('send'))();
|
|
TextColumn get status => text().withDefault(const Constant('waiting'))();
|
|
TextColumn get fileName => text()();
|
|
IntColumn get fileSize => integer().withDefault(const Constant(0))();
|
|
IntColumn get transferredBytes => integer().withDefault(const Constant(0))();
|
|
RealColumn get speed => real().withDefault(const Constant(0.0))();
|
|
TextColumn get mimeType => text().nullable()();
|
|
TextColumn get filePath => text().nullable()();
|
|
TextColumn get thumbnailPath => text().nullable()();
|
|
TextColumn get fileSha256 => text().nullable()();
|
|
BoolColumn get hashVerified => boolean().nullable()();
|
|
TextColumn get errorMessage => text().nullable()();
|
|
DateTimeColumn get startTime => dateTime()();
|
|
DateTimeColumn get endTime => dateTime().nullable()();
|
|
DateTimeColumn get createdAt => dateTime()();
|
|
DateTimeColumn get updatedAt => dateTime()();
|
|
|
|
@override
|
|
Set<Column> get primaryKey => {id};
|
|
}
|
|
|
|
// ============================================================
|
|
// 配对记录表 — 已配对设备的信任关系
|
|
// ============================================================
|
|
|
|
class PairingRecords extends Table {
|
|
TextColumn get id => text()();
|
|
TextColumn get deviceId => text()();
|
|
TextColumn get alias => text()();
|
|
TextColumn get pairingMethod => text().withDefault(const Constant('lan'))();
|
|
BoolColumn get isTrusted => boolean().withDefault(const Constant(false))();
|
|
TextColumn get ip => text().nullable()();
|
|
IntColumn get port => integer().withDefault(const Constant(53317))();
|
|
TextColumn get fingerprint => text().nullable()();
|
|
TextColumn get publicKey => text().nullable()();
|
|
DateTimeColumn get pairedAt => dateTime()();
|
|
DateTimeColumn get lastConnectedAt => dateTime().nullable()();
|
|
DateTimeColumn get createdAt => dateTime()();
|
|
DateTimeColumn get updatedAt => dateTime()();
|
|
|
|
@override
|
|
Set<Column> get primaryKey => {id};
|
|
}
|
|
|
|
// ============================================================
|
|
// 传输消息表 — 传输对话消息持久化
|
|
// ============================================================
|
|
|
|
class TransferMessages extends Table {
|
|
TextColumn get id => text()();
|
|
TextColumn get sessionId => text()();
|
|
TextColumn get type => text().withDefault(const Constant('text'))();
|
|
TextColumn get content => text()();
|
|
BoolColumn get isRemote => boolean().withDefault(const Constant(false))();
|
|
TextColumn get peerDeviceId => text().nullable()();
|
|
TextColumn get transferTaskId => text().nullable()();
|
|
TextColumn get fileName => text().nullable()();
|
|
IntColumn get fileSize => integer().nullable()();
|
|
TextColumn get mimeType => text().nullable()();
|
|
TextColumn get thumbnailPath => text().nullable()();
|
|
TextColumn get filePath => text().nullable()();
|
|
RealColumn get progress => real().nullable()();
|
|
TextColumn get transferStatus => text().nullable()();
|
|
TextColumn get deviceAlias => text().nullable()();
|
|
TextColumn get deviceEmoji => text().nullable()();
|
|
DateTimeColumn get timestamp => dateTime()();
|
|
DateTimeColumn get createdAt => dateTime()();
|
|
|
|
@override
|
|
Set<Column> get primaryKey => {id};
|
|
}
|