Files
immich/mobile-v2/lib/domain/repositories/user.repository.dart
T
shenlong-tanwen 75448ce56b add proper logging
2025-02-26 08:58:19 +05:30

66 lines
2.0 KiB
Dart

import 'dart:async';
import 'package:drift/drift.dart';
import 'package:immich_mobile/domain/entities/user.entity.drift.dart';
import 'package:immich_mobile/domain/interfaces/user.interface.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/domain/repositories/database.repository.dart';
import 'package:immich_mobile/utils/mixins/log_context.mixin.dart';
class UserDriftRepository with LogContext implements IUserRepository {
final DriftDatabaseRepository db;
const UserDriftRepository(this.db);
@override
FutureOr<User?> getUser(String userId) async {
return await db.managers.user
.filter((f) => f.id.equals(userId))
.map((u) => u.toModel())
.getSingleOrNull();
}
@override
FutureOr<bool> insertUser(User user) async {
try {
return await db.transaction(() async {
await db.into(db.user).insertOnConflictUpdate(UserCompanion.insert(
id: user.id,
name: user.name,
email: user.email,
profileImagePath: user.profileImagePath,
avatarColor: user.avatarColor,
inTimeline: Value(user.inTimeline),
isAdmin: Value(user.isAdmin),
memoryEnabled: Value(user.memoryEnabled),
quotaSizeInBytes: Value(user.quotaSizeInBytes),
quotaUsageInBytes: Value(user.quotaSizeInBytes),
updatedAt: Value(user.updatedAt),
));
return true;
});
} catch (e, s) {
log.severe("Cannot insert User into table - $user", e, s);
return false;
}
}
}
extension _UserDataToUser on UserData {
User toModel() {
return User(
id: id,
email: email,
avatarColor: avatarColor,
inTimeline: inTimeline,
isAdmin: isAdmin,
memoryEnabled: memoryEnabled,
name: name,
profileImagePath: profileImagePath,
quotaSizeInBytes: quotaSizeInBytes,
quotaUsageInBytes: quotaUsageInBytes,
updatedAt: updatedAt,
);
}
}