4. Procedures: query и mutation
Процедуры — это основные строительные блоки tRPC API. Каждая процедура — это функция, которую клиент может вызвать на сервере. Они делятся на два типа: query для чтения данных и mutation для их изменения.
publicProcedure
Заголовок раздела «publicProcedure»publicProcedure — базовая процедура, доступная всем без аутентификации. Её можно создать через t.procedure, где t — экземпляр инициализированного tRPC. Все остальные процедуры (например, protectedProcedure) создаются путём расширения базовой через .use(middleware).
Процедура query
Заголовок раздела «Процедура query»Query-процедуры используются для получения данных. Они вызываются через GET-запросы (при использовании httpBatchLink) и кешируются React Query. Определяются через .query(async ({ input, ctx }) => { ... }).
Процедура mutation
Заголовок раздела «Процедура mutation»Mutation-процедуры изменяют данные на сервере. Они вызываются через POST-запросы и не кешируются. Определяются через .mutation(async ({ input, ctx }) => { ... }). На клиенте используются с useMutation().
Вывод типов
Заголовок раздела «Вывод типов»Одна из главных возможностей tRPC — автоматический вывод типов. TypeScript анализирует возвращаемое значение процедуры и автоматически типизирует клиентский код. Вам не нужно явно указывать типы ответов.
Цепочка методов
Заголовок раздела «Цепочка методов»Процедура строится цепочкой методов: publicProcedure.input(schema).query(handler). Каждый вызов возвращает новую процедуру. Порядок важен: сначала .input(), затем .use() (middleware), потом .query() или .mutation().