/**
 * localStorage 키 관리 — 사용자별 독립 데이터 저장
 *
 * 원칙:
 * - 모든 로컬 저장 데이터는 userId 기반 키 사용
 * - 로그아웃 시 데이터 삭제하지 않음 (재로그인 시 복원)
 * - 장래 1일 1회 제한은 백엔드 + 프론트 단에서 처리
 */

/** 사용자별 설문 스토리지 키 */
export const getSurveyKey = (userId: number): string => `pcnt_survey_${userId}`;

/** 사용자별 인지검사 스토리지 키 (향후 확장) */
export const getTestKey = (userId: number): string => `pcnt_test_${userId}`;

/** 사용자별 세션 스토리지 키 */
export const getSessionKey = (userId: number): string => `pcnt_session_${userId}`;

/** 특정 사용자의 모든 데이터 키 조회 */
export const getUserStorageKeys = (userId: number): string[] => {
  return [
    getSurveyKey(userId),
    getTestKey(userId),
    getSessionKey(userId),
  ];
};

/** 특정 사용자의 모든 데이터 삭제 (계정 탈퇴 등) */
export const clearUserStorage = (userId: number): void => {
  getUserStorageKeys(userId).forEach((key) => {
    localStorage.removeItem(key);
  });
};

/** 레거시 키 (v1 호환용) */
export const LEGACY_SURVEY_KEY = 'pcnt_survey';
export const LEGACY_TEST_KEY = 'pcnt_test';

/** 레거시 키가 있으면 새 구조로 마이그레이션 */
export const migrateLegacyStorage = (userId: number): void => {
  // 레거시 키가 존재하고, 새 키가 없으면 마이그레이션
  const legacyData = localStorage.getItem(LEGACY_SURVEY_KEY);
  if (legacyData && !localStorage.getItem(getSurveyKey(userId))) {
    localStorage.setItem(getSurveyKey(userId), legacyData);
    // 레거시 키는 삭제하지 않음 (다른 사용자에게 아직 필요할 수 있음)
  }
};