Babies are free
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user