mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
refactor(mobile): log service (#16383)
refactor: log service Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
parent
fbd85a89e0
commit
28c664c769
24 changed files with 656 additions and 201 deletions
52
mobile/lib/infrastructure/entities/log.entity.dart
Normal file
52
mobile/lib/infrastructure/entities/log.entity.dart
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import 'package:immich_mobile/domain/models/log.model.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
|
||||
part 'log.entity.g.dart';
|
||||
|
||||
@Collection(inheritance: false)
|
||||
class LoggerMessage {
|
||||
Id id = Isar.autoIncrement;
|
||||
String message;
|
||||
String? details;
|
||||
@Enumerated(EnumType.ordinal)
|
||||
LogLevel level = LogLevel.INFO;
|
||||
DateTime createdAt;
|
||||
String? context1;
|
||||
String? context2;
|
||||
|
||||
LoggerMessage({
|
||||
required this.message,
|
||||
required this.details,
|
||||
required this.level,
|
||||
required this.createdAt,
|
||||
required this.context1,
|
||||
required this.context2,
|
||||
});
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'LoggerMessage(message: $message, level: $level, createdAt: $createdAt)';
|
||||
}
|
||||
|
||||
LogMessage toDto() {
|
||||
return LogMessage(
|
||||
message: message,
|
||||
level: level,
|
||||
createdAt: createdAt,
|
||||
logger: context1,
|
||||
error: details,
|
||||
stack: context2,
|
||||
);
|
||||
}
|
||||
|
||||
static LoggerMessage fromDto(LogMessage log) {
|
||||
return LoggerMessage(
|
||||
message: log.message,
|
||||
details: log.error,
|
||||
level: log.level,
|
||||
createdAt: log.createdAt,
|
||||
context1: log.logger,
|
||||
context2: log.stack,
|
||||
);
|
||||
}
|
||||
}
|
||||
1298
mobile/lib/infrastructure/entities/log.entity.g.dart
generated
Normal file
1298
mobile/lib/infrastructure/entities/log.entity.g.dart
generated
Normal file
File diff suppressed because it is too large
Load diff
53
mobile/lib/infrastructure/repositories/log.repository.dart
Normal file
53
mobile/lib/infrastructure/repositories/log.repository.dart
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import 'package:immich_mobile/domain/interfaces/log.interface.dart';
|
||||
import 'package:immich_mobile/domain/models/log.model.dart';
|
||||
import 'package:immich_mobile/infrastructure/entities/log.entity.dart';
|
||||
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
|
||||
class IsarLogRepository extends IsarDatabaseRepository
|
||||
implements ILogRepository {
|
||||
final Isar _db;
|
||||
const IsarLogRepository(super.db) : _db = db;
|
||||
|
||||
@override
|
||||
Future<bool> deleteAll() async {
|
||||
await transaction(() async => await _db.loggerMessages.clear());
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<LogMessage>> getAll() async {
|
||||
final logs =
|
||||
await _db.loggerMessages.where().sortByCreatedAtDesc().findAll();
|
||||
return logs.map((l) => l.toDto()).toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> insert(LogMessage log) async {
|
||||
final logEntity = LoggerMessage.fromDto(log);
|
||||
await transaction(() async {
|
||||
await _db.loggerMessages.put(logEntity);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> insertAll(Iterable<LogMessage> logs) async {
|
||||
await transaction(() async {
|
||||
final logEntities =
|
||||
logs.map((log) => LoggerMessage.fromDto(log)).toList();
|
||||
await _db.loggerMessages.putAll(logEntities);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> truncate({int limit = 250}) async {
|
||||
await transaction(() async {
|
||||
final count = await _db.loggerMessages.count();
|
||||
if (count <= limit) return;
|
||||
final toRemove = count - limit;
|
||||
await _db.loggerMessages.where().limit(toRemove).deleteAll();
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue