/**
 * 设置数据服务
 * 抽象所有 db.settings 操作，便于后续替换为 API 调用
 */

import { db } from './db'

const SETTINGS_ID = 'default'

export const DEFAULT_SETTINGS = Object.freeze({
  id: SETTINGS_ID,
  searchShortcut: 'Ctrl+K',
  theme: 'light',
  defaultView: 'card',
  tagOrder: [], // 标签顺序数组
  libraryView: 'tag', // 书签库视图：'tag' 标签视图 | 'all' 全部书签视图
})

/**
 * 获取设置（如果不存在则创建默认设置）
 * @returns {Promise<Object>} 设置对象
 */
async function getSettings() {
  const stored = await db.settings.get(SETTINGS_ID)
  if (stored) {
    return { ...DEFAULT_SETTINGS, ...stored, id: SETTINGS_ID }
  } else {
    // 创建默认设置
    await db.settings.put(DEFAULT_SETTINGS)
    return { ...DEFAULT_SETTINGS }
  }
}

/**
 * 更新设置
 * @param {Object} patch - 要更新的设置对象
 * @returns {Promise<Object>} 更新后的设置对象
 */
async function updateSettings(patch) {
  const current = await getSettings()
  const updated = {
    ...current,
    ...patch,
    id: SETTINGS_ID,
  }
  await db.settings.put(updated)
  return updated
}

// 导出服务对象
export const settingsService = {
  getSettings,
  updateSettings,
  SETTINGS_ID,
  DEFAULT_SETTINGS,
}

