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();
  }
}