# Conflicts: # apps/im_app/lib/features/chat/presentation/chat_db_test_view_model.dart # apps/im_app/lib/features/login/presentation/login_view_model.dart 修复逻辑漏洞,性能优化
89 lines
2.2 KiB
Dart
89 lines
2.2 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:im_app/data/local/drift/app_database.dart';
|
|
import 'package:im_app/domain/entities/sound.dart';
|
|
|
|
/// 音效 DTO
|
|
class SoundDto {
|
|
final int id;
|
|
final String filePath;
|
|
final int typ;
|
|
final String name;
|
|
final int createdAt;
|
|
final int updatedAt;
|
|
final int deletedAt;
|
|
final int channelGroupId;
|
|
final int isDefault;
|
|
|
|
const SoundDto({
|
|
required this.id,
|
|
this.filePath = '',
|
|
required this.typ,
|
|
this.name = '',
|
|
required this.createdAt,
|
|
required this.updatedAt,
|
|
this.deletedAt = 0,
|
|
required this.channelGroupId,
|
|
required this.isDefault,
|
|
});
|
|
|
|
factory SoundDto.fromJson(Map<String, dynamic> json) => SoundDto(
|
|
id: json['id'] as int,
|
|
filePath: json['file_path'] ?? '',
|
|
typ: json['typ'] as int,
|
|
name: json['name'] ?? '',
|
|
createdAt: json['created_at'] as int,
|
|
updatedAt: json['updated_at'] as int,
|
|
deletedAt: json['deleted_at'] ?? 0,
|
|
channelGroupId: json['channel_group_id'] as int,
|
|
isDefault: json['is_default'] as int,
|
|
);
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
'id': id,
|
|
'file_path': filePath,
|
|
'typ': typ,
|
|
'name': name,
|
|
'created_at': createdAt,
|
|
'updated_at': updatedAt,
|
|
'deleted_at': deletedAt,
|
|
'channel_group_id': channelGroupId,
|
|
'is_default': isDefault,
|
|
};
|
|
|
|
Sound toEntity() => Sound(
|
|
id: id,
|
|
filePath: filePath,
|
|
typ: typ,
|
|
name: name,
|
|
createdAt: createdAt,
|
|
updatedAt: updatedAt,
|
|
deletedAt: deletedAt,
|
|
channelGroupId: channelGroupId,
|
|
isDefault: isDefault,
|
|
);
|
|
|
|
factory SoundDto.fromEntity(Sound sound) => SoundDto(
|
|
id: sound.id,
|
|
filePath: sound.filePath,
|
|
typ: sound.typ,
|
|
name: sound.name,
|
|
createdAt: sound.createdAt,
|
|
updatedAt: sound.updatedAt,
|
|
deletedAt: sound.deletedAt,
|
|
channelGroupId: sound.channelGroupId,
|
|
isDefault: sound.isDefault,
|
|
);
|
|
|
|
SoundsCompanion toCompanion() => SoundsCompanion(
|
|
id: Value(id),
|
|
filePath: Value(filePath),
|
|
typ: Value(typ),
|
|
name: Value(name),
|
|
createdAt: Value(createdAt),
|
|
updatedAt: Value(updatedAt),
|
|
deletedAt: Value(deletedAt),
|
|
channelGroupId: Value(channelGroupId),
|
|
isDefault: Value(isDefault),
|
|
);
|
|
}
|