feat(quest): add support for private images in answers

This commit is contained in:
2026-07-31 02:14:34 +02:00
parent de0eaee521
commit 45865d3122
9 changed files with 53 additions and 14 deletions
+2 -2
View File
@@ -77,7 +77,7 @@ export default defineEventHandler(async (event) => {
where: {
final: true,
picture: {
isNot: null
private: false
}
}
}
@@ -95,7 +95,7 @@ export default defineEventHandler(async (event) => {
some: {
final: true,
picture: {
isNot: null
private: false
}
}
}
+4 -2
View File
@@ -138,7 +138,8 @@ export default defineEventHandler(async (event) => {
where: {
review: {
showcase: true
}
},
picture: { private: false }
},
orderBy: [
{
@@ -217,6 +218,7 @@ export default defineEventHandler(async (event) => {
pictureCount,
totalScore,
leaderboard,
...hunt
...hunt,
quests: hunt.quests.filter((q) => q.answers.length > 0)
};
});
+2 -1
View File
@@ -71,7 +71,8 @@ export default defineEventHandler(async (event) => {
text: true,
picture: {
select: {
url: true
url: true,
private: true
}
},
review: {
+17 -3
View File
@@ -101,7 +101,8 @@ export default defineEventHandler(async (event) => {
.mime(['image/png', 'image/jpeg', 'image/jpg'])
.max(10_000_000)
.optional(),
final: zh.boolAsString.optional()
final: zh.boolAsString.optional(),
private: zh.boolAsString.default(false)
})
.parse(formDataObj);
@@ -110,7 +111,8 @@ export default defineEventHandler(async (event) => {
? quest.answers![0]!
: {
updatedAt: null,
id: null
id: null,
picture: null
};
if (
@@ -158,7 +160,8 @@ export default defineEventHandler(async (event) => {
const file = await tx.file.create({
data: {
...picture,
answerId: prevAnswer.id
answerId: prevAnswer.id,
private: data.private
},
select: { id: true }
});
@@ -190,6 +193,7 @@ export default defineEventHandler(async (event) => {
data: {
...picture,
answerId: answer.id,
private: data.private,
answers: {
connect: answer
}
@@ -210,6 +214,16 @@ export default defineEventHandler(async (event) => {
lang: data.lang
}
});
if (prevAnswer.picture) {
await prisma.file.update({
where: {
id: prevAnswer.picture.id
},
data: {
private: data.private
}
});
}
} else {
await prisma.questAnswer.create({
data: {