// ========================================
// IndexedDB 設定 (Dexie.js)
// ========================================

const db = new Dexie('JunkCodeZeroDB');

// スキーマ定義
// id: プライマリキー (自動インクリメント)
// slotName: セーブスロットの名前 (AutoSave, Slot 1, etc.)
// timestamp: 保存日時
db.version(1).stores({
  saves: '++id, slotName, timestamp'
});

const saveGameToDB = async (slotName, gameState) => {
  const existing = await db.saves.where('slotName').equals(slotName).first();
  const data = {
    slotName,
    timestamp: Date.now(),
    data: gameState
  };

  if (existing) {
    return await db.saves.update(existing.id, data);
  } else {
    return await db.saves.add(data);
  }
};

const loadGameFromDB = async (slotName) => {
  const save = await db.saves.where('slotName').equals(slotName).first();
  return save ? save.data : null;
};

const getAllSaves = async () => {
  return await db.saves.orderBy('timestamp').reverse().toArray();
};

const deleteSaveFromDB = async (id) => {
  return await db.saves.delete(id);
};
