Files
xianyan/lib/features/file_transfer/database/transfer_tables.dart
Developer 283950ea07 chore: 批量代码优化与功能迭代更新
本次提交包含大量代码优化、功能新增与服务端配置更新:
1. 修复分析报告统计数据,调整CMake策略设置
2. 优化APP权限配置、编辑器与聊天界面组件
3. 更新依赖库版本与pubspec配置
4. 新增文件传输服务端、信令服务器相关配置与脚本
5. 完善用户注销功能与数据库迁移脚本
6. 优化多处动画效果、代码风格与日志输出
7. 新增多种调试与部署脚本,修复已知BUG
2026-05-12 06:28:04 +08:00

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};
}