[docstore] replace remaining Joi usage with zod (#34603)

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 41ca0c35d59bf6accd619f6b5149be14a69e1078
This commit is contained in:
Copilot
2026-06-16 08:07:22 +00:00
committed by Copybot
co-authored by Jakob Ackermann
parent 6f9b7031f4
commit f40cebf60b
7 changed files with 37 additions and 51 deletions
+12 -10
View File
@@ -5,6 +5,17 @@ import HealthChecker from './HealthChecker.js'
import Errors from './Errors.js'
import Settings from '@overleaf/settings'
import { expressify } from '@overleaf/promise-utils'
import { parseReq, z } from '@overleaf/validation-tools'
const patchDocSchema = z.object({
body: z
.object({
deleted: z.literal(true),
deletedAt: z.coerce.date(),
name: z.string(),
})
.strict(),
})
async function getDoc(req, res) {
const { doc_id: docId, project_id: projectId } = req.params
@@ -182,18 +193,9 @@ async function updateDoc(req, res) {
}
async function patchDoc(req, res) {
const { body: meta } = parseReq(req, patchDocSchema)
const { doc_id: docId, project_id: projectId } = req.params
logger.debug({ projectId, docId }, 'patching doc')
const allowedFields = ['deleted', 'deletedAt', 'name']
const meta = {}
Object.entries(req.body).forEach(([field, value]) => {
if (allowedFields.includes(field)) {
meta[field] = value
} else {
logger.fatal({ field }, 'joi validation for pathDoc is broken')
}
})
await DocManager.patchDoc(projectId, docId, meta)
res.sendStatus(204)
}