diff --git a/packages/schema/src/index.ts b/packages/schema/src/index.ts index fdae3b0..d01271a 100644 --- a/packages/schema/src/index.ts +++ b/packages/schema/src/index.ts @@ -1,3 +1,4 @@ export * from './general' export * from './user' export * from './changelog' +export * from './version' diff --git a/packages/schema/src/version/base.ts b/packages/schema/src/version/base.ts new file mode 100644 index 0000000..8ca5828 --- /dev/null +++ b/packages/schema/src/version/base.ts @@ -0,0 +1,24 @@ +import { z } from '@hono/zod-openapi' + +export const VersionOutput = z + .object({ + id: z.string().uuid().openapi({ + example: '9f00f912-f687-42ef-84d7-efde48ca11ef', + }), + changelogId: z.string().uuid().openapi({ + example: '8f00f912-f687-42ef-84d7-efde48ca11ef', + }), + version: z.string().openapi({ + example: '1.0.0', + }), + markdown: z.string().openapi({ + example: '### Changelog\n\n- Added a new feature', + }), + releasedAt: z.date().optional().openapi({ + example: '2024-01-01T00:00:00.000Z', + }), + status: z.enum(['draft', 'review', 'published']).default('draft').openapi({ + example: 'draft', + }), + }) + .openapi('Version') diff --git a/packages/schema/src/version/byId.ts b/packages/schema/src/version/byId.ts new file mode 100644 index 0000000..3a35343 --- /dev/null +++ b/packages/schema/src/version/byId.ts @@ -0,0 +1,14 @@ +import { z } from '@hono/zod-openapi' + +export const VersionByIdParams = z.object({ + id: z + .string() + .uuid() + .openapi({ + param: { + name: 'id', + in: 'path', + }, + example: 'a5ed5965-0506-44e6-aaec-0465ff9fe092', + }), +}) diff --git a/packages/schema/src/version/create.ts b/packages/schema/src/version/create.ts new file mode 100644 index 0000000..1c2c35a --- /dev/null +++ b/packages/schema/src/version/create.ts @@ -0,0 +1,15 @@ +import { z } from '@hono/zod-openapi' +import { VersionOutput } from './base' + +export const VersionCreateOutput = VersionOutput +export const VersionCreateInput = z + .object({ + changelogId: z.string().uuid(), + version: z.string(), + releasedAt: z.date().or(z.string()).optional(), + status: z.enum(['draft', 'review', 'published']).default('draft'), + markdown: z.string(), + }) + .openapi({ + required: ['changelogId', 'version', 'markdown', 'releasedAt'], + }) diff --git a/packages/schema/src/version/index.ts b/packages/schema/src/version/index.ts new file mode 100644 index 0000000..4882adb --- /dev/null +++ b/packages/schema/src/version/index.ts @@ -0,0 +1,5 @@ +export * from './base' +export * from './byId' +export * from './create' +export * from './list' +export * from './update' diff --git a/packages/schema/src/version/list.ts b/packages/schema/src/version/list.ts new file mode 100644 index 0000000..e552c20 --- /dev/null +++ b/packages/schema/src/version/list.ts @@ -0,0 +1,4 @@ +import { z } from '@hono/zod-openapi' +import { VersionOutput } from './base' + +export const VersionListOutput = z.array(VersionOutput) diff --git a/packages/schema/src/version/update.ts b/packages/schema/src/version/update.ts new file mode 100644 index 0000000..43114d1 --- /dev/null +++ b/packages/schema/src/version/update.ts @@ -0,0 +1,20 @@ +import { z } from '@hono/zod-openapi' +import { VersionOutput } from './base' + +export const VersionUpdateOutput = VersionOutput +export const VersionUpdateInput = z + .object({ + markdown: z.string().optional(), + status: z + .enum(['draft', 'review', 'published']) + .default('draft') + .optional(), + }) + .openapi({}) +export const VersionUpdateParams = z + .object({ + id: z.string().uuid(), + }) + .openapi({ + required: ['id'], + })