40 lines
1.6 KiB
Dart
40 lines
1.6 KiB
Dart
|
|
import 'package:isar/isar.dart';
|
||
|
|
import 'package:drift/drift.dart' as drift;
|
||
|
|
import 'package:mnemo_cards_backend/database/database.dart';
|
||
|
|
import 'package:mnemo_cards_common_backend/mnemo_cards_common_backend.dart';
|
||
|
|
|
||
|
|
/// Extension для конвертации User (Drift) в UserModel (Isar)
|
||
|
|
extension UserToUserModel on User {
|
||
|
|
Future<UserModel> toUserModel() async {
|
||
|
|
// Создаем UserModel на основе User из Drift
|
||
|
|
final userModel = UserModel(
|
||
|
|
id: id,
|
||
|
|
name: name,
|
||
|
|
email: email,
|
||
|
|
admin: admin,
|
||
|
|
// purchases и userSettings нужно загружать отдельно из UserDatas
|
||
|
|
purchases: [], // TODO: load from UserDatas
|
||
|
|
userSettings: null, // TODO: load from UserDatas
|
||
|
|
);
|
||
|
|
|
||
|
|
// TODO: Загрузить связанные данные (userData, packs, subscription)
|
||
|
|
// Пока оставляем пустыми для совместимости
|
||
|
|
|
||
|
|
return userModel;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Extension для конвертации UserModel в User (Drift)
|
||
|
|
extension UserModelToUser on UserModel {
|
||
|
|
UsersCompanion toUsersCompanion() {
|
||
|
|
return UsersCompanion(
|
||
|
|
id: id != null ? drift.Value(id as int) : const drift.Value.absent(),
|
||
|
|
// Note: UserModel не имеет externalUserId, purchases, userSettings
|
||
|
|
// Эти поля нужно брать из других источников или генерировать
|
||
|
|
externalUserId: const drift.Value.absent(), // TODO: generate or get from context
|
||
|
|
name: drift.Value(name),
|
||
|
|
email: drift.Value(email),
|
||
|
|
admin: drift.Value(admin),
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|