babai/backend/lib/store.dart
2025-01-29 17:50:44 -07:00

61 lines
2.0 KiB
Dart

import 'package:shared_models/models/translation_request.dart';
import 'package:shared_models/models/user.dart';
class MemoryStore {
static final Map<String, TranslationRequest> _googooTranslations = {};
static final Map<String, TranslationRequest> _humanTranslations = {};
static final Map<String, User> _users = {};
// User methods
static User? getUser(String userId) => _users[userId];
static void addUser(User user) => _users[user.id] = user;
// Googoo translation methods
static TranslationRequest? getGoogooTranslation(String id, String userId) {
final translation = _googooTranslations[id];
if (translation?.userId != userId) return null;
return translation;
}
static void addGoogooTranslation(TranslationRequest translation) {
_googooTranslations[translation.id] = translation;
}
static List<TranslationRequest> getUserGoogooTranslations(String userId) {
return _googooTranslations.values.where((t) => t.userId == userId).toList();
}
// Human translation methods
static TranslationRequest? getHumanTranslation(String id, String userId) {
final translation = _humanTranslations[id];
if (translation?.userId != userId) return null;
return translation;
}
static void addHumanTranslation(TranslationRequest translation) {
_humanTranslations[translation.id] = translation;
}
static List<TranslationRequest> getUserHumanTranslations(String userId) {
return _humanTranslations.values.where((t) => t.userId == userId).toList();
}
// Cleanup methods
static void removeOldTranslations(Duration maxAge) {
final cutoffTime = DateTime.now().subtract(maxAge);
_googooTranslations.removeWhere(
(_, translation) => translation.timestamp.isBefore(cutoffTime),
);
_humanTranslations.removeWhere(
(_, translation) => translation.timestamp.isBefore(cutoffTime),
);
}
// For testing/development
static void clearAll() {
_googooTranslations.clear();
_humanTranslations.clear();
_users.clear();
}
}