Skip to content

Commit 7296eb8

Browse files
authored
Kafka consumer schema input support (#310)
* Adding to support for zod inpit on Kafka consumer * Release prepare * lint fix
1 parent aff25ac commit 7296eb8

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

packages/kafka/lib/handler-container/KafkaHandlerConfig.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { CommonLogger } from '@lokalise/node-core'
22
import type { Message } from '@platformatic/kafka'
3-
import type { ZodSchema } from 'zod'
3+
import type { ZodSchema, ZodTypeDef } from 'zod'
44

55
export interface RequestContext {
66
logger: CommonLogger
@@ -14,11 +14,11 @@ export type KafkaHandler<MessageValue extends object, ExecutionContext> = (
1414
) => Promise<void> | void
1515

1616
export class KafkaHandlerConfig<MessageValue extends object, ExecutionContext> {
17-
public readonly schema: ZodSchema<MessageValue>
17+
public readonly schema: ZodSchema<MessageValue, ZodTypeDef, unknown>
1818
public readonly handler: KafkaHandler<MessageValue, ExecutionContext>
1919

2020
constructor(
21-
schema: ZodSchema<MessageValue>,
21+
schema: ZodSchema<MessageValue, ZodTypeDef, unknown>,
2222
handler: KafkaHandler<MessageValue, ExecutionContext>,
2323
) {
2424
this.schema = schema

packages/kafka/lib/handler-container/KafkaHandlerContainer.spec.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import { KafkaHandlerConfig } from './KafkaHandlerConfig.ts'
44
import { KafkaHandlerContainer } from './KafkaHandlerContainer.ts'
55
import type { KafkaHandlerRouting } from './KafkaHandlerRoutingBuilder.ts'
66

7-
const CREATE_SCHEMA = z.object({ type: z.literal('create') })
7+
const CREATE_SCHEMA = z.object({
8+
type: z.literal('create'),
9+
prop: z.string().transform((val) => Number(val)),
10+
})
811
const UPDATE_SCHEMA = z.object({ type: z.literal('update') })
912
const EMPTY_SCHEMA = z.object({})
1013

@@ -69,8 +72,12 @@ describe('KafkaHandlerContainer', () => {
6972
expect(container.resolveHandler('all', { type: 'non-existing' })?.schema).toBe(EMPTY_SCHEMA)
7073
expect(container.resolveHandler('all', {})?.schema).toBe(EMPTY_SCHEMA)
7174

72-
expect(container.resolveHandler('create', { type: 'create' })?.schema).toBe(CREATE_SCHEMA)
73-
expect(container.resolveHandler('create', { type: 'update' as any })?.schema).toBe(undefined)
75+
expect(container.resolveHandler('create', { type: 'create', prop: 1 })?.schema).toBe(
76+
CREATE_SCHEMA,
77+
)
78+
expect(container.resolveHandler('create', { type: 'update' as any, prop: 1 })?.schema).toBe(
79+
undefined,
80+
)
7481
expect(container.resolveHandler('create', {} as any)?.schema).toBe(undefined)
7582

7683
expect(container.resolveHandler('empty', {} as any)?.schema).toBe(EMPTY_SCHEMA)
@@ -88,8 +95,10 @@ describe('KafkaHandlerContainer', () => {
8895
const container = new KafkaHandlerContainer(topicHandlers)
8996

9097
// Then
91-
expect(container.resolveHandler('create', { type: 'create' })?.schema).toBe(CREATE_SCHEMA)
92-
expect(container.resolveHandler('create', { type: 'update' as any })?.schema).toBe(
98+
expect(container.resolveHandler('create', { type: 'create', prop: 1 })?.schema).toBe(
99+
CREATE_SCHEMA,
100+
)
101+
expect(container.resolveHandler('create', { type: 'update' as any, prop: 1 })?.schema).toBe(
93102
CREATE_SCHEMA,
94103
)
95104
expect(container.resolveHandler('create', {} as any)?.schema).toBe(CREATE_SCHEMA)

packages/kafka/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@message-queue-toolkit/kafka",
3-
"version": "0.2.2",
3+
"version": "0.2.3",
44
"engines": {
55
"node": ">= 22.14.0"
66
},

0 commit comments

Comments
 (0)