0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-02-11 01:18:24 -05:00
immich/mobile-v2/lib/domain/repositories/user.repository.dart
2024-10-17 10:51:23 +05:30

63 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?> getForId(String userId) async {
return await _db.managers.user
.filter((f) => f.id.equals(userId))
.map(_toModel)
.getSingleOrNull();
}
@override
FutureOr<bool> upsert(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,
);
}