Я работаю над Vovk.ts уже несколько лет. Это внутренний уровень поверх обработчиков маршрутов App Router: вы пишете контроллер с процедурами, и каждая процедура представляет собой обычный обработчик маршрута, метод сгенерированного клиента выборки (TypeScript,...
Я работаю над Vovk.ts уже несколько лет. Это внутренний уровень поверх обработчиков маршрутов App Router: вы пишете контроллер с процедурами, и каждая процедура представляет собой обычный обработчик маршрута, метод сгенерированного клиента выборки (TypeScript, Python, Rust), операцию в спецификации OpenAPI и инструмент искусственного интеллекта.
Инструментальная часть — это то, над чем я работал в последнее время. Две процедуры:
импорт {получить, операция, сообщение, префикс, процедура} из 'vovk';
импортировать {z} из 'zod';
const TaskSchema = z.object({ id: z.string(), title: z.string(), Done: z.boolean() });
константные задачи: z.infer[] = [];
@prefix('задачи')
экспортировать класс по умолчанию TaskController {
@operation({ summary: «Список задач», описание: «Возвращает каждую задачу». })
@get()
статический listTasks = процедура({вывод: TaskSchema.array() }).handle(() => задачи);
@operation({ summary: «Создать задачу», описание: «Создает задачу с заданным названием». })
@пост()
статический createTask = процедура({
body: z.object({ title: z.string().min(1).describe('Что нужно сделать') }),
вывод: TaskSchema,
}).handle(async (req) => {
const Task = { id: crypto.randomUUID(), title: (await req.vovk.body()).title, Done: false };
задачи.push(задача);
возвратное задание;