feat: change user-delete to soft delete for performance entries
This commit is contained in:
+18
-4
@@ -138,10 +138,10 @@ export const performanceVerifyRoutes = new Elysia({
|
|||||||
params: t.Object({ id: t.String() }),
|
params: t.Object({ id: t.String() }),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
// ── User-scoped hard delete (owner or admin) ────────────────────
|
// ── User-scoped soft delete (owner or admin) ────────────────────
|
||||||
.delete(
|
.delete(
|
||||||
"/:id/user-delete",
|
"/:id/user-delete",
|
||||||
async ({ params, request, set }) => {
|
async ({ params, body, request, set }) => {
|
||||||
const guard = await requireRole(request.headers, [
|
const guard = await requireRole(request.headers, [
|
||||||
"user",
|
"user",
|
||||||
"contributor",
|
"contributor",
|
||||||
@@ -171,14 +171,28 @@ export const performanceVerifyRoutes = new Elysia({
|
|||||||
return { error: "Not authorized to delete this entry" }
|
return { error: "Not authorized to delete this entry" }
|
||||||
}
|
}
|
||||||
|
|
||||||
await db
|
const reason = body?.reason as string | undefined
|
||||||
.delete(performanceEntries)
|
|
||||||
|
const [updated] = await db
|
||||||
|
.update(performanceEntries)
|
||||||
|
.set({
|
||||||
|
isRemoved: true,
|
||||||
|
removedReason: reason ?? "User deleted",
|
||||||
|
updatedAt: new Date(),
|
||||||
|
})
|
||||||
.where(eq(performanceEntries.id, params.id))
|
.where(eq(performanceEntries.id, params.id))
|
||||||
|
.returning()
|
||||||
|
|
||||||
|
if (!updated) {
|
||||||
|
set.status = 404
|
||||||
|
return { error: "Performance entry not found" }
|
||||||
|
}
|
||||||
|
|
||||||
return { success: true }
|
return { success: true }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
params: t.Object({ id: t.String() }),
|
params: t.Object({ id: t.String() }),
|
||||||
|
body: t.Optional(t.Object({ reason: t.Optional(t.String()) })),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
// ── Best entry: highest-rated for latest version ──────────────────
|
// ── Best entry: highest-rated for latest version ──────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user