import db from './db';
import { ElMessage } from 'element-plus';

export const useDexie = () => {
	// 检查数据库实例是否存在
	if (!db) {
		return {
			addRecord: async () => {
				console.error('该浏览器不支持 IndexedDB.');
				ElMessage.error('您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
			},
			getAllRecords: async () => {
				console.error('该浏览器不支持 IndexedDB');
				ElMessage.error('您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
			},
			getRecordById: async () => {
				console.error('该浏览器不支持 IndexedDB');
				ElMessage.error('您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
			},
			updateRecord: async () => {
				console.error('该浏览器不支持 IndexedDB');
				ElMessage.error('您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
			},
			deleteRecord: async () => {
				console.error('该浏览器不支持 IndexedDB');
				ElMessage.error('您的浏览器不支持IndexedDB，请升级您的浏览器至更新的版本，推荐使用 谷歌、火狐、360极速浏览器');
			},
		};
	}

	const addRecord = async (table: string, record: any) => {
		try {
			const id = await db![table].add(record);
			return id;
		} catch (error) {
			console.error('IndexedDB添加数据失败 ', error);
		}
	};

	const getAllRecords = async (table: string) => {
		try {
			const records = await db![table].toArray();
			return records;
		} catch (error) {
			console.error('IndexedDB获取数据失败: ', error);
		}
	};

	const getRecordById = async (table: string, id: number) => {
		try {
			const record = await db![table].get(id);
			return record;
		} catch (error) {
			console.error('IndexedDB获取数据失败: ', error);
		}
	};

	const updateRecord = async (table: string, id: number, updatedRecord: any) => {
		try {
			await db![table].update(id, updatedRecord);
		} catch (error) {
			console.error('IndexedDB更新数据失败: ', error);
		}
	};

	const deleteRecord = async (table: string, id: number) => {
		try {
			await db![table].delete(id);
		} catch (error) {
			console.error('IndexedDB删除数据失败: ', error);
		}
	};

	return {
		addRecord,
		getAllRecords,
		getRecordById,
		updateRecord,
		deleteRecord,
	};
};
