fix(questions): 完成 questions/data-access.ts 遗漏的 cacheFn 迁移

This commit is contained in:
SpecialX
2026-07-05 22:27:07 +08:00
parent 841b130f4c
commit 0f33484bd2

View File

@@ -492,26 +492,34 @@ export type QuestionContentForErrorCollection = {
type: string
}
export const getQuestionsContentForErrorCollection = cache(
async (questionIds: string[]): Promise<Map<string, QuestionContentForErrorCollection>> => {
const result = new Map<string, QuestionContentForErrorCollection>()
const uniqueIds = Array.from(new Set(questionIds.filter((v): v is string => typeof v === "string" && v.length > 0)))
if (uniqueIds.length === 0) return result
export const getQuestionsContentForErrorCollectionRaw = async (
questionIds: string[],
): Promise<Map<string, QuestionContentForErrorCollection>> => {
const result = new Map<string, QuestionContentForErrorCollection>()
const uniqueIds = Array.from(new Set(questionIds.filter((v): v is string => typeof v === "string" && v.length > 0)))
if (uniqueIds.length === 0) return result
const rows = await db
.select({
id: questions.id,
content: questions.content,
type: questions.type,
})
.from(questions)
.where(inArray(questions.id, uniqueIds))
const rows = await db
.select({
id: questions.id,
content: questions.content,
type: questions.type,
})
.from(questions)
.where(inArray(questions.id, uniqueIds))
for (const r of rows) {
result.set(r.id, { content: r.content, type: r.type })
}
return result
for (const r of rows) {
result.set(r.id, { content: r.content, type: r.type })
}
return result
}
export const getQuestionsContentForErrorCollection = cacheFn(
getQuestionsContentForErrorCollectionRaw,
{
tags: ["questions"],
ttl: 300,
keyParts: ["questions", "getQuestionsContentForErrorCollection"],
},
)
/**
@@ -522,23 +530,28 @@ export const getQuestionsContentForErrorCollection = cache(
*
* 返回 Map<questionId, type>,未找到的 ID 不会出现在 Map 中。
*/
export const getQuestionTypeMapByIds = cache(
async (questionIds: string[]): Promise<Map<string, string>> => {
const result = new Map<string, string>()
const uniqueIds = Array.from(new Set(questionIds.filter((v): v is string => typeof v === "string" && v.length > 0)))
if (uniqueIds.length === 0) return result
export const getQuestionTypeMapByIdsRaw = async (
questionIds: string[],
): Promise<Map<string, string>> => {
const result = new Map<string, string>()
const uniqueIds = Array.from(new Set(questionIds.filter((v): v is string => typeof v === "string" && v.length > 0)))
if (uniqueIds.length === 0) return result
const rows = await db
.select({ id: questions.id, type: questions.type })
.from(questions)
.where(inArray(questions.id, uniqueIds))
const rows = await db
.select({ id: questions.id, type: questions.type })
.from(questions)
.where(inArray(questions.id, uniqueIds))
for (const r of rows) {
result.set(r.id, r.type)
}
return result
for (const r of rows) {
result.set(r.id, r.type)
}
)
return result
}
export const getQuestionTypeMapByIds = cacheFn(getQuestionTypeMapByIdsRaw, {
tags: ["questions"],
ttl: 300,
keyParts: ["questions", "getQuestionTypeMapByIds"],
})
// ---------------------------------------------------------------------------
// 导入/导出接口