Files
Prisma/lib/backend/repositories/search_repository.dart
T
2026-05-23 11:46:52 +03:00

40 lines
1.2 KiB
Dart

import 'package:isar/isar.dart';
import '../../core/database/app_database.dart';
import '../../core/database/database_service.dart';
import '../../core/utils/result.dart';
import '../models/search_history.dart';
class SearchRepository {
SearchRepository(this._databaseService);
final DatabaseService _databaseService;
Future<Result<void>> save(SearchHistory history) {
return _databaseService.safeWrite((isar) async {
await isar.searchHistoryEntitys.put(
SearchHistoryEntity()
..historyId = history.id
..query = history.query
..tags = history.tags
..searchedAt = history.searchedAt
..resultCount = history.resultCount,
);
});
}
Future<Result<List<SearchHistory>>> recent({int limit = 20}) {
return _databaseService.safeRead((isar) async {
final items = await isar.searchHistoryEntitys.where().findAll();
items.sort((a, b) => b.searchedAt.compareTo(a.searchedAt));
return items.take(limit).map((entity) => entity.toModel()).toList();
});
}
Future<Result<void>> clear() {
return _databaseService.safeWrite((isar) async {
await isar.searchHistoryEntitys.clear();
});
}
}