@platformatic/kafka
Version:
Modern and performant client for Apache Kafka
92 lines (91 loc) • 2.85 kB
JavaScript
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);