electron-vue-exam-single/electron/service/questionService.js

142 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
addQuestion,
getAllQuestions,
getQuestionById,
updateQuestion,
deleteQuestion,
getAllQuestionsWithRelations,
updateQuestionDescription,
addChoiceQuestion // 添加新函数导入
} from '../db/question.js';
// 导入configService中的increaseQuestionBankVersion方法
import {
increaseQuestionBankVersion
} from './configService.js';
/**
* 服务层:添加题干
* @param {Object} questionData - 题干数据
* @returns {Promise<number>} 新创建的题干ID
*/
export async function createQuestion(questionData) {
try {
const result = await addQuestion(questionData);
// 调用增加题库版本号的方法
await increaseQuestionBankVersion();
return result;
} catch (error) {
console.error('服务层: 添加题干失败', error);
throw error;
}
}
/**
* 服务层:获取所有题干
* @returns {Promise<Array>} 题干列表
*/
export async function fetchAllQuestions() {
try {
return await getAllQuestions();
} catch (error) {
console.error('服务层: 获取所有题干失败', error);
throw error;
}
}
/**
* 服务层:获取所有题干及其关联信息
* @returns {Promise<Array>} 包含关联信息的题干列表
*/
export async function fetchAllQuestionsWithRelations() {
try {
return await getAllQuestionsWithRelations();
} catch (error) {
console.error('服务层: 获取所有题干及其关联信息失败', error);
throw error;
}
}
/**
* 服务层根据ID获取题干
* @param {number} id - 题干ID
* @returns {Promise<Object|null>} 题干详情
*/
export async function fetchQuestionById(id) {
try {
return await getQuestionById(id);
} catch (error) {
console.error('服务层: 根据ID获取题干失败', error);
throw error;
}
}
/**
* 服务层:更新题干
* @param {number} id - 题干ID
* @param {Object} questionData - 题干数据
* @returns {Promise<boolean>} 是否更新成功
*/
export async function modifyQuestion(id, questionData) {
try {
const result = await updateQuestion(id, questionData);
// 调用增加题库版本号的方法
await increaseQuestionBankVersion();
return result;
} catch (error) {
console.error('服务层: 更新题干失败', error);
throw error;
}
}
/**
* 服务层:更新题干描述
* @param {number} id - 题干ID
* @param {string} questionDescription - 新的题干描述
* @returns {Promise<boolean>} 是否更新成功
*/
export async function modifyQuestionDescription(id, questionDescription) {
try {
const result = await updateQuestionDescription(id, questionDescription);
// 调用增加题库版本号的方法
await increaseQuestionBankVersion();
return result;
} catch (error) {
console.error('服务层: 更新题干描述失败', error);
throw error;
}
}
/**
* 服务层:删除题干
* @param {number} id - 题干ID
* @returns {Promise<boolean>} 是否删除成功
*/
export async function removeQuestion(id) {
try {
const result = await deleteQuestion(id);
// 调用增加题库版本号的方法
await increaseQuestionBankVersion();
return result;
} catch (error) {
console.error('服务层: 删除题干失败', error);
throw error;
}
}
/**
* 服务层:添加选择题问题
* @param {Object} choiceData - 选择题数据
* @returns {Promise<number>} 新创建的选择题ID
*/
export async function createChoiceQuestion(choiceData) {
try {
const result = await addChoiceQuestion(choiceData);
// 调用增加题库版本号的方法
await increaseQuestionBankVersion();
return result;
} catch (error) {
console.error('服务层: 添加选择题失败', error);
throw error;
}
}