import { z, createRoute } from '@hono/zod-openapi'
import documentService from 'somewhere'
import { HonoPublicAPIApp } from '../types'
import { routePath } from 'hono/route'
const bodySchema = z.object({
name: z.string(),
file: z.file(),
dateIssued: z.iso.date().pipe(z.coerce.date()).optional(),
dateExpiry: z.iso.date().pipe(z.coerce.date()).optional()
...
})
const route = createRoute({
method: 'post',
path: '/v1/documents',
request: {
body: {
content: {
'multipart/form-data': {
schema: bodySchema
}
}
}
},
responses: {
200: {
description: 'Document created successfully',
content: {
'application/json': {
schema: responseSchema
}
}
}
}
})
export const registerAddDocumentRoute = (app: HonoPublicAPIApp) => {
app.openapi(route, async (c) => {
const form = c.req.valid('form')
const document = await documentService.createDocument({
file: form.file,
name: form.name,
dateExpiry: form.dateExpiry,
dateIssued: form.dateIssued
...
})
return c.json({
data: {
documentId: document.data?.documentId || ''
}
})
})
}
import { z, createRoute } from '@hono/zod-openapi'
import documentService from 'somewhere'
import { HonoPublicAPIApp } from '../types'
import { routePath } from 'hono/route'
const bodySchema = z.object({
name: z.string(),
file: z.file(),
dateIssued: z.iso.date().pipe(z.coerce.date()).optional(),
dateExpiry: z.iso.date().pipe(z.coerce.date()).optional()
...
})
const route = createRoute({
method: 'post',
path: '/v1/documents',
request: {
body: {
content: {
'multipart/form-data': {
schema: bodySchema
}
}
}
},
responses: {
200: {
description: 'Document created successfully',
content: {
'application/json': {
schema: responseSchema
}
}
}
}
})
export const registerAddDocumentRoute = (app: HonoPublicAPIApp) => {
app.openapi(route, async (c) => {
const form = c.req.valid('form')
const document = await documentService.createDocument({
file: form.file,
name: form.name,
dateExpiry: form.dateExpiry,
dateIssued: form.dateIssued
...
})
return c.json({
data: {
documentId: document.data?.documentId || ''
}
})
})
}