DEV Community

João Marcos Rodrigues Pimentel for LEDS

Posted on • Edited on

2 2

Manual de Uso R2D2

Este manual descreve o uso da extensão de Visual Studio Code geradora de código e documentação R2D2.

Instalação:

1- Abra o Visual Studio Code
2- Clique em extensões
3- Pesquise R2D2
4- Clique para instalar a extensão R2D2 do LEDS IFES

Imagem da loja do VSCode com a extensão aberta

Como usar:

Criando o arquivo para geração:

1- Crie um arquivo de nome qualquer com a extensão .r2d2.
2- Após criar o arquivo, abra-o.
3- Aqui iniciaremos a programação da geração de código. Primeiro, definimos a configuração do projeto a ser gerado. Para fins de exemplo, vamos seguir o modelo de exemplo do Slave-One (Outro projeto do Leds). Assim, definimos as configurações do projeto:

   Configuration {
       software_name: "Slave-One" // O nome do projeto
       about: "Slave-one project example" // Uma descrição do projeto
       language: csharp-minimal-api // Escolha a linguagem em que o código será gerado
   }
Enter fullscreen mode Exit fullscreen mode

Para a linguagem, temos três opções por enquanto: python, java e csharp-minimal-api.
4- Depois, definimos módulos. Assim, definimos um módulo:

   module Main {
       // Aqui ficam os componentes dos módulos
   }
Enter fullscreen mode Exit fullscreen mode

5- Dentro de módulos, definimos entidades e enums:

   entity Projeto {
       nome: string
       data_inicio: date
       data_fim: date
       orcamento: decimal
       cliente: string
       patrocinador: string
       objetivo: string
       Projeto OneToMany Projeto
       Projeto OneToMany Time
       Projeto uses ProjetoStatus
   }

   enum ProjetoStatus {
       Ativo
       Cancelado
       Entregue
   }
Enter fullscreen mode Exit fullscreen mode

Dentro da declaração de entidade, temos os seus atributos, como nome: string, as relações entre as classes, como Projeto OneToMany Projeto, e o Projeto uses ProjetoStatus, que indica o uso de um enum. Na declaração do Enum, apenas colocamos quais os valores do enum. E assim continuamos a declarações com quantos módulos, entidades e enums forem necessários.

Rodando R2D2 para gerar o código:

Após criar, estruturar e salvar o arquivo .r2d2, clique com o botão direito em qualquer lugar dentro do arquivo e escolha o que você deseja gerar (Na versão atual, o r2d2 gera apenas a API), como na imagem abaixo:

Menu clique com botão direito no VSCode

Após isso, as pastas e o conteúdo serão gerados na mesma pasta em que o arquivo .r2d2 se encontra.

Pastas com os conteúdos no explorador de arquivos

Como utilizar o código gerado em C# no Visual Studio:

1- Abra o arquivo da solução gerada no Visual Studio: Com o Visual Studio já instalado, apenas abra a pasta do backend e abra o arquivo com o nome do seu projeto .sln.
2- (Não ocorre em todos os casos) Correção da auto relação na entidade, caso tenha alguma auto relação, entre no arquivo .cs da entidade e faça a troca do nome da entidade para o nome desejado (um nome diferente do da própria entidade para evitar conflitos no C#)
Exemplo da troca de nome
Depois disso, troque o nome da entidade também na relação dentro do ContextDb.cs:
Exemplo troca de nome dentro do ContextDb
Assim a auto relação funcionará corretamente.
3- Apenas clique para rodar o container docker e código.
Menu do Visual Studio com o botão para rodar
Após isso é só esperar tudo compilar, que ele abrirá uma página no seu navegador com o link da API, caso apareça uma página com Hello World tudo está funcionando.

Abrindo o Swagger:

1- Já na página da API no navegador(Hello World), basta adicionar /swagger ao final do link que entraremos na tela do swagger.

Tela do Swagger

Exemplo:

Link do repositório com o exemplo do Slave-One
Neste repositório temos tudo o que foi gerado seguindo este manual.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more