Files
immich/mobile-v2/lib/domain/repositories/log.repository.dart
T
shenlong-tanwen 3b8951fde6 more refactors
2025-02-26 08:58:19 +05:30

89 lines
2.2 KiB
Dart

import 'dart:async';
import 'package:drift/drift.dart';
import 'package:flutter/foundation.dart';
import 'package:immich_mobile/domain/entities/log.entity.drift.dart';
import 'package:immich_mobile/domain/interfaces/log.interface.dart';
import 'package:immich_mobile/domain/models/log.model.dart';
import 'package:immich_mobile/domain/repositories/database.repository.dart';
class LogRepository implements ILogRepository {
final DriftDatabaseRepository _db;
const LogRepository({required DriftDatabaseRepository db}) : _db = db;
@override
Future<List<LogMessage>> getAll() async {
return await _db.managers.logs.map(_toModel).get();
}
@override
Future<void> truncate({int limit = 250}) async {
final totalCount = await _db.managers.logs.count();
if (totalCount > limit) {
final rowsToDelete = totalCount - limit;
await _db.managers.logs
.orderBy((o) => o.createdAt.desc())
.limit(rowsToDelete)
.delete();
}
}
@override
FutureOr<bool> create(LogMessage log) async {
try {
await _db.logs.insertOne(_toEntity(log));
return true;
} catch (e) {
debugPrint("Error while adding a log to the DB - $e");
return false;
}
}
@override
FutureOr<bool> createAll(Iterable<LogMessage> logs) async {
try {
await _db.batch((b) {
b.insertAll(_db.logs, logs.map(_toEntity));
});
return true;
} catch (e) {
debugPrint("Error while adding a log to the DB - $e");
return false;
}
}
@override
FutureOr<bool> deleteAll() async {
try {
await _db.logs.deleteAll();
return true;
} catch (e) {
debugPrint("Error while clearning the logs in DB - $e");
return false;
}
}
}
LogsCompanion _toEntity(LogMessage log) {
return LogsCompanion.insert(
content: log.content,
level: log.level,
createdAt: Value(log.createdAt),
error: Value(log.error),
logger: Value(log.logger),
stack: Value(log.stack),
);
}
LogMessage _toModel(Log log) {
return LogMessage(
content: log.content,
createdAt: log.createdAt,
level: log.level,
error: log.error,
logger: log.logger,
stack: log.stack,
);
}