import Dexie, { Table } from 'dexie';
import type { Task, TaskData } from './interface';
import { ElMessage } from 'element-plus';


// 创建数据库实例
class StDatabase extends Dexie {
  task!: Table<Task>; // 任务表
  task_data!: Table<TaskData>; // 任务参数表

  constructor() {
    super('StDatabase');
    this.version(1).stores({
      task: '++id, taskName, type, disconnectAndReconnect, taskPriority, createTime, startTime, endTime',
      task_data: '++id, taskId, data, state'
    });
  }
}

let db: StDatabase | null = null;

// 检查浏览器是否支持IndexedDB
if (window.indexedDB) {
  db = new StDatabase();
  db.open().catch((err) => {
    console.error("Indexed数据库打开失败 " + err.stack);
    ElMessage.error('Indexed数据库打开失败，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
  });
} else {
  console.error("您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器");
  ElMessage.error('您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
}

export default db;
