Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • backend backend
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 47
    • Issues 47
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • CP - Planta
  • backendbackend
  • Issues
  • #53

Closed
Open
Created Nov 22, 2024 by Adriana Anacleto Serpa@adriana.serpaMaintainer0 of 11 tasks completed0/11 tasks

Atualizar swagger

Atualizar todo o swagger.

  • Revisar com o squad de front as informações atualizadas no swagger.
  • Avisar para o time quando estiver pronto.

Para atualizar o swagger, seguir os passos: para cada DTO, verificar o schema de validação do Zod para o mesmo, pois ele mostra quais são os campos obrigatórios e permitidos para cada caso. Onde? dentro do módulo, no diretório "dto", haverá um arquivo "algumacoisa.schema.ts". Esse é o arquivo de validação que é o primeiro a ser chamado pelo Pipe da rota chamada no request, e valida os campos antes de chamar o endpoint do backend. O DTO pode ser encontrado no mesmo diretório, e haverão no mínimo dois, sendo um "create.algumacoisa.dto.ts" e "updadte.algumacoisa.dto.ts". Esses arquivos devem refletir o schema, pois é a partir deles que o Swagger expõe os campos para fora da api.

Atenção: não deverão ser alterados os campos existentes, pois interferem no funcionamento do código do backend. Apenas use os decorators do Swagger para "explicar" o que cada campo faz, dar exemplos, quais são obrigatórios, etc. Caso precise incluir campos ali para refletir a funcionalidade do Zod, poderá fazer, marcando eles como "readonly".

O Swagger também vê e expõe os endpoints do "controller" que tem os decorators informados. Quando existir orderBy ou outra informação relevante, deve ser declarada ali para ficar visível.

A seguir um exemplo prático: módulo: categories zod: categories.schema.ts conteúdo do schema: import * as z from 'zod';

export const CreateCategorySchema = z.object({ description: z.string().min(3, 'Description is required') });

export const UpdateCategorySchema = z.object({ description: z.string().min(3, 'Description is required').optional(), active: z.boolean().optional() });

Dtos: create.categories.dto.ts conteúdo: import { ApiProperty } from '@nestjs/swagger'; // aqui chama o swagger

export class CreateCategoriesDto { @ApiProperty({ description: 'Category description', minLength: 3, example: 'Category' }) readonly description: string;

nesse exemplo, usa-se o "@ApiProperty" para exibir informações sobre os dados.

Dicas:

  • verifique antes de mexer como o Swagger está sendo exibido, para ter uma ideia de como aparece.

  • o atalho "ctrl+espaço" exibe as opções disponíveis.

  • users

  • categories

  • occurrences

  • persons

  • production

  • production-steps

  • products

  • stock

  • stock-locations

Edited Nov 22, 2024 by Rodrigo Oliveira Rosa
Assignee
Assign to
Time tracking