Remember uploaded images
This commit is contained in:
@@ -115,9 +115,9 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
// TODO: prevent updating reviewed answers
|
||||
// TODO: respect end of hunt
|
||||
// TODO: keep old images
|
||||
|
||||
let picture: string | undefined = undefined;
|
||||
let picture: { creatorId: number; url: string; uuid: string } | undefined =
|
||||
undefined;
|
||||
|
||||
if (data.image) {
|
||||
const uuid = randomUUID();
|
||||
@@ -131,30 +131,75 @@ export default defineEventHandler(async (event) => {
|
||||
'Content-Type': data.image.type
|
||||
}
|
||||
);
|
||||
picture = `https://${s3Bucket}.${s3Host}/${uuid}`;
|
||||
picture = {
|
||||
creatorId: userId,
|
||||
url: `https://${s3Bucket}.${s3Host}/${uuid}`,
|
||||
uuid
|
||||
};
|
||||
}
|
||||
|
||||
if (prevAnswer.id) {
|
||||
await prisma.questAnswer.update({
|
||||
where: {
|
||||
id: prevAnswer.id
|
||||
},
|
||||
data: {
|
||||
memberId: userId,
|
||||
text: data.answer,
|
||||
picture
|
||||
if (picture) {
|
||||
await prisma.$transaction(async (tx) => {
|
||||
if (prevAnswer.id) {
|
||||
const file = await tx.file.create({
|
||||
data: {
|
||||
...picture,
|
||||
answerId: prevAnswer.id
|
||||
},
|
||||
select: { id: true }
|
||||
});
|
||||
await tx.questAnswer.update({
|
||||
where: {
|
||||
id: prevAnswer.id
|
||||
},
|
||||
data: {
|
||||
memberId: userId,
|
||||
text: data.answer,
|
||||
pictureId: file.id
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const answer = await tx.questAnswer.create({
|
||||
data: {
|
||||
teamId: team.id,
|
||||
memberId: userId,
|
||||
questId: quest.id,
|
||||
text: data.answer
|
||||
},
|
||||
select: { id: true }
|
||||
});
|
||||
await tx.file.create({
|
||||
data: {
|
||||
...picture,
|
||||
answerId: answer.id,
|
||||
answers: {
|
||||
connect: answer
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
await prisma.questAnswer.create({
|
||||
data: {
|
||||
teamId: team.id,
|
||||
memberId: userId,
|
||||
questId: quest.id,
|
||||
text: data.answer,
|
||||
picture
|
||||
}
|
||||
});
|
||||
if (prevAnswer.id) {
|
||||
await prisma.questAnswer.update({
|
||||
where: {
|
||||
id: prevAnswer.id
|
||||
},
|
||||
data: {
|
||||
memberId: userId,
|
||||
text: data.answer
|
||||
}
|
||||
});
|
||||
} else {
|
||||
await prisma.questAnswer.create({
|
||||
data: {
|
||||
teamId: team.id,
|
||||
memberId: userId,
|
||||
questId: quest.id,
|
||||
text: data.answer
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return { ok: true };
|
||||
|
||||
Reference in New Issue
Block a user