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