UNPKG

@platformatic/kafka

Version:

Modern and performant client for Apache Kafka

92 lines (91 loc) 2.85 kB
import { ConsumerGroupStates } from "../../apis/enumerations.js"; import { ajv, listErrorMessage } from "../../utils.js"; import { idProperty } from "../base/options.js"; export const groupsProperties = { groups: { type: 'array', items: idProperty, minItems: 1 } }; export const createTopicOptionsSchema = { type: 'object', properties: { topics: { type: 'array', items: idProperty }, partitions: { type: 'number' }, replicas: { type: 'number' }, assignments: { type: 'array', items: { type: 'object', properties: { partition: { type: 'number', minimum: 0 }, brokers: { type: 'array', items: { type: 'number' }, minItems: 1 } }, required: ['partition', 'brokers'], additionalProperties: false }, minItems: 1 } }, required: ['topics'], additionalProperties: false }; export const listTopicOptionsSchema = { type: 'object', properties: { includeInternals: { type: 'boolean', default: false } }, additionalProperties: false }; export const deleteTopicOptionsSchema = { type: 'object', properties: { topics: { type: 'array', items: idProperty } }, required: ['topics'], additionalProperties: false }; export const listGroupsOptionsSchema = { type: 'object', properties: { states: { type: 'array', items: { type: 'string', enumeration: { allowed: ConsumerGroupStates, errorMessage: listErrorMessage(ConsumerGroupStates) } }, minItems: 0 }, types: { type: 'array', items: idProperty, minItems: 0 } }, additionalProperties: false }; export const describeGroupsOptionsSchema = { type: 'object', properties: { ...groupsProperties, includeAuthorizedOperations: { type: 'boolean' } }, required: ['groups'], additionalProperties: false }; export const deleteGroupsOptionsSchema = { type: 'object', properties: groupsProperties, required: ['groups'], additionalProperties: false }; export const createTopicsOptionsValidator = ajv.compile(createTopicOptionsSchema); export const listTopicsOptionsValidator = ajv.compile(listTopicOptionsSchema); export const deleteTopicsOptionsValidator = ajv.compile(deleteTopicOptionsSchema); export const listGroupsOptionsValidator = ajv.compile(listGroupsOptionsSchema); export const describeGroupsOptionsValidator = ajv.compile(describeGroupsOptionsSchema); export const deleteGroupsOptionsValidator = ajv.compile(deleteGroupsOptionsSchema);