Files
immich/mobile-v2/lib/domain/repositories/user.repository.dart
T
shenlong-tanwen 239bca0cda refactor: logging
2025-02-26 08:58:19 +05:30

64 lines
1.9 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.mixin.dart';
class UserDriftRepository with LogMixin implements IUserRepository {
final DriftDatabaseRepository _db;
const UserDriftRepository(this._db);
@override
FutureOr<User?> fetch(String userId) async {
return await _db.managers.user
.filter((f) => f.id.equals(userId))
.map(_toModel)
.getSingleOrNull();
}
@override
FutureOr<bool> add(User user) async {
try {
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.e("Cannot insert User into table - $user", e, s);
return false;
}
}
}
User _toModel(UserData user) {
return User(
id: user.id,
email: user.email,
avatarColor: user.avatarColor,
inTimeline: user.inTimeline,
isAdmin: user.isAdmin,
memoryEnabled: user.memoryEnabled,
name: user.name,
profileImagePath: user.profileImagePath,
quotaSizeInBytes: user.quotaSizeInBytes,
quotaUsageInBytes: user.quotaUsageInBytes,
updatedAt: user.updatedAt,
);
}