├── README.md ├── _assets ├── dados.xlsx └── ds-dark.svg ├── _certificado └── README.md ├── _instalacao ├── linux │ └── README.md ├── mac │ └── README.md └── windows │ └── README.md ├── episodio1 └── README.md ├── episodio2 └── README.md └── episodio3 └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # ![DevSuperior logo](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/devsuperior-logo-small.png) Semana Spring React - SDS 4.0 2 | > Evento gratuito - 6 a 12 de setembro/2021 3 | > 4 | > *Crie um app completo para seu portfólio com as tecnologias mais demandadas do mercado* 5 | 6 | ## Realização 7 | [DevSuperior - Escola de programação](https://devsuperior.com.br) 8 | 9 | [![DevSuperior no Instagram](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/ig-icon.png)](https://instagram.com/devsuperior.ig) 10 | [![DevSuperior no Youtube](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/yt-icon.png)](https://youtube.com/devsuperior) 11 | 12 | # Recados importantes 13 | 14 | ## 1) Os conteúdos ficarão disponíveis somente até domingo às 23h59 15 | 16 | ## 2) Página de inscrição do evento 17 | - [Página de inscrição - Semana Spring React](https://devsuperior.com.br/sds4-inscricao-org) 18 | 19 | ## 3) Guias de instalação das ferramentas 20 | - [Guia de instalação das ferramentas no Windows](https://github.com/devsuperior/sds4/tree/main/_instalacao/windows) 21 | - [Guia de instalação das ferramentas no Linux](https://github.com/devsuperior/sds4/tree/main/_instalacao/linux) 22 | - [Guia de instalação das ferramentas no Mac](https://github.com/devsuperior/sds4/tree/main/_instalacao/mac) 23 | 24 | ## 4) Discord do evento para dúvidas e networking 25 | - [Discord da Semana Spring React](https://discord.gg/QAk4vBKke4) 26 | 27 | - Apresente-se no canal `#papo-e-networking` 28 | - Fique de olho nos avisos e no canal `#duvidas-frequentes` 29 | 30 | ## 5) Passos para obter o certificado na nossa plataforma 31 | - [Passos para obter o certificado](https://github.com/devsuperior/sds4/tree/main/_certificado) 32 | 33 | 34 | ## Conteúdos de preparação 35 | 36 | ### 1) Super revisão de OO e SQL 37 | 38 | [![Image](https://img.youtube.com/vi/xC_yKw3MYX4/mqdefault.jpg "Vídeo no Youtube")](https://youtu.be/xC_yKw3MYX4) 39 | 40 | ### 2) JpaRepository: interface boladona do Spring 41 | 42 | [![Image](https://img.youtube.com/vi/jh_T5_o3qKE/mqdefault.jpg "Vídeo no Youtube")](https://youtu.be/jh_T5_o3qKE) 43 | 44 | ### 3) Modelo de domínio: como implementar no Spring 45 | 46 | [![Image](https://img.youtube.com/vi/OX5MmJrFTdw/mqdefault.jpg "Vídeo no Youtube")](https://youtu.be/OX5MmJrFTdw) 47 | 48 | ### 4) ReactJS primeiros passos - Introdução Prática 49 | 50 | [![Image](https://img.youtube.com/vi/IOJoJGDowEY/mqdefault.jpg "Vídeo no Youtube")](https://youtu.be/IOJoJGDowEY) 51 | 52 | ### 5) Git e Github para iniciantes 53 | 54 | [![Image](https://img.youtube.com/vi/KLG-jC1fh28/mqdefault.jpg "Vídeo no Youtube")](https://youtu.be/KLG-jC1fh28) 55 | -------------------------------------------------------------------------------- /_assets/dados.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devsuperior/sds4/6aa7e85d24fcfbb3dae90bdddc7b1352c6c4bf4d/_assets/dados.xlsx -------------------------------------------------------------------------------- /_assets/ds-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /_certificado/README.md: -------------------------------------------------------------------------------- 1 | # ![DevSuperior logo](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/devsuperior-logo-small.png) Semana Spring React 2 | 3 | # Passos para obter o certificado 4 | 5 | ## 1) Faça sua inscrição no evento 6 | 7 | https://devsuperior.com.br/sds4-inscricao-org 8 | 9 | ## 2) Acesse a plataforma da DevSuperior e use a função 'Esqueci minha senha' para definir sua senha 10 | 11 | https://learn.devsuperior.com 12 | 13 | ## 3) Preencha sua identificação na plataforma 14 | 15 | `Menu superior -> Certificados -> Meu cadastro` 16 | 17 | (faça isso agora para agilizar seu certificado) 18 | 19 | ## 4) Implemente o projeto conforme os episódios do evento 20 | 21 | ### Requisitos 22 | - Seu projeto precisa ter pelo menos 50% de equivalência dos commits das aulas no seu usuário, para podermos atestar que você fez o projeto gradualmente junto com a gente. O certificado não será validado para projetos com menos de 50% de equivalência dos commits. 23 | - Seu projeto no Netlify precisa estar funcionando (mostrando os dois gráficos, e a tabela paginada de vendas). 24 | 25 | ## 5) Envie os links do projeto antes do final do evento 26 | 27 | **ATENÇÃO: não será possível enviar o projeto depois do evento** 28 | 29 | ## 6) Aguarde até 2 semanas após o evento e acesse seu certificado na plataforma 30 | 31 | -------------------------------------------------------------------------------- /_instalacao/linux/README.md: -------------------------------------------------------------------------------- 1 | # SDS: Instalação das ferramentas no Linux (Ubuntu/Debian) 2 | 3 | ## ATENÇÃO: 4 | 5 | **É MUITO IMPORTANTE que todos instalem as mesmas versões para evitar imprevistos durante a construção do projeto, e aumentar as chances de que suas dúvidas sejam respondidas.** 6 | 7 | ## Ferramentas que você deverá instalar no seu computador: 8 | 9 | - Curl 10 | - Git 11 | - Java JDK 11 12 | - Maven 13 | - STS 14 | - Postman 15 | - Postgresql e pgAdmin 16 | - Heroku CLI 17 | - Node & NPM 18 | - VS Code 19 | 20 | ## Playlist mostrando a instalação: 21 | 22 | https://www.youtube.com/playlist?list=PLNuUvBZGBA8mcAF-YX7RJhA26TBLdG5yk 23 | 24 | ## Curl 25 | 26 | - Instalar o curl 27 | ``` 28 | sudo apt-get install -y curl 29 | ``` 30 | - Conferir a instalação: 31 | ``` 32 | curl 33 | ``` 34 | 35 | ## Git 36 | 37 | - Instalar: 38 | ``` 39 | sudo apt-get install -y git 40 | ``` 41 | 42 | - Conferir a instalação: 43 | ``` 44 | git 45 | ``` 46 | 47 | ## Java JDK 11 48 | 49 | - Instalar Java: 50 | ``` 51 | sudo apt install openjdk-11-jdk 52 | ``` 53 | 54 | - Verificar a instalação: 55 | ``` 56 | java -version 57 | ``` 58 | - Configurar JAVA_HOME: 59 | - Verificar caminho Java: 60 | ``` 61 | sudo update-alternatives --config java 62 | ``` 63 | - Copie o caminho do Java 64 | - Edite o arquivo .bashrc: 65 | ``` 66 | sudo gedit ~/.bashrc 67 | ``` 68 | - Copie o código abaixo no final do arquivo. Salve o arquivo. 69 | - Abra um novo terminal e teste: 70 | ``` 71 | echo $JAVA_HOME 72 | ``` 73 | 74 | ``` 75 | JAVA_HOME=/usr/... 76 | export JAVA_HOME 77 | export PATH=$PATH:$JAVA_HOME 78 | ``` 79 | 80 | ## Maven 81 | 82 | - Instalar Maven: 83 | ``` 84 | sudo apt-get install maven 85 | ``` 86 | - Verificar a instalação: 87 | ``` 88 | mvn -v 89 | ``` 90 | 91 | ## STS 92 | 93 | - Google: STS 94 | - Baixar 95 | - Descompactar (exemplo: /home/user/apps) 96 | - Iniciar STS 97 | - Selecione um workspace (exemplo: /home/user/Workspaces/ws-sts) 98 | - Liberar permissão na pasta do workspace: 99 | ``` 100 | sudo chmod -R ugo+rw /home/user/Workspaces/ws-sts 101 | ``` 102 | 103 | ## Postman 104 | 105 | - Instalar com snap: 106 | ``` 107 | snap install postman 108 | ``` 109 | 110 | ## Postgresql 111 | 112 | ``` 113 | https://www.postgresql.org/download/linux/ubuntu/ 114 | ``` 115 | 116 | ## pgAdmin 117 | 118 | ``` 119 | https://www.pgadmin.org/download/pgadmin-4-apt/ 120 | ``` 121 | 122 | ## Heroku CLI 123 | 124 | ``` 125 | https://devcenter.heroku.com/articles/heroku-cli 126 | ``` 127 | 128 | ## Node & NPM 129 | 130 | ``` 131 | sudo apt update 132 | 133 | curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - 134 | 135 | sudo apt-get install nodejs 136 | ``` 137 | 138 | ## YARN (Caso queira usar o YARN ao invés do NPM) 139 | No Debian e no Ubuntu: 140 | ``` 141 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - 142 | 143 | echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list 144 | 145 | sudo apt-get update && sudo apt-get install yarn 146 | 147 | ``` 148 | Caso tenha problemas de instalação a própria DOC do Yarn é muito útil: https://classic.yarnpkg.com/pt-BR/docs/install/#debian-stable 149 | 150 | ## VS Code 151 | 152 | ``` 153 | https://code.visualstudio.com/download 154 | 155 | sudo snap install code --classic 156 | ``` 157 | 158 | -------------------------------------------------------------------------------- /_instalacao/mac/README.md: -------------------------------------------------------------------------------- 1 | # SDS: Instalação das ferramentas no Mac 2 | 3 | ## ATENÇÃO: 4 | 5 | **É MUITO IMPORTANTE que todos instalem as mesmas versões para evitar imprevistos durante a construção do projeto, e possibilitar que suas dúvidas sejam respondidas.** 6 | 7 | ## Ferramentas que você deverá instalar no seu computador: 8 | 9 | - JDK 11 10 | - STS 11 | - Postman 12 | - Postgresql e pgAdmin 13 | - Heroku CLI 14 | - NPM 15 | - VS Code 16 | - Git 17 | 18 | ## Instalar o Homebrew 19 | ``` 20 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 21 | ``` 22 | 1. Update HomeBrew. 23 | ``` 24 | $ brew update 25 | ``` 26 | 2. Add the casks tap. 27 | ``` 28 | $ brew tap homebrew/cask-versions 29 | ``` 30 | 31 | ## Java 11 on MacOS 32 | ``` 33 | $ brew tap AdoptOpenJDK/openjdk 34 | $ brew install --cask adoptopenjdk11 35 | ``` 36 | - Verificar a instalação: 37 | ``` 38 | $ java —version 39 | ``` 40 | 41 | ## STS on MacOS 42 | ``` 43 | $ brew cask install springtoolsuite 44 | ``` 45 | 46 | ## postman 47 | ``` 48 | $ brew cask install postman 49 | ``` 50 | 51 | ## postgresql 52 | ``` 53 | $ brew install postgresql 54 | ``` 55 | - Se você for criar um banco de dados local, execute o seguinte comando para iniciar o servidor e fazer login nele (basicamente, ele configura um único usuário "admin" com seu nome de usuário com quem você fará o login) : 56 | ``` 57 | $ brew services start postgresql 58 | ``` 59 | - Para o servidor 60 | ``` 61 | brew services stop postgresql 62 | ``` 63 | - Terminal do Postgres (use ``` \q ``` para sair) 64 | ``` 65 | $ psql postgres 66 | ``` 67 | 68 | ## pgadmin4 69 | ``` 70 | $ brew cask install pgadmin4 71 | ``` 72 | 73 | ## Heroku CLI 74 | Criar uma conta no site do Heroku 75 | https://devcenter.heroku.com/articles/heroku-cli#getting-started 76 | - Instalar o heroku CLI 77 | ``` 78 | $ brew tap heroku/brew && brew install heroku 79 | ``` 80 | - Vincular a sua conta com a instalação no computador 81 | ``` 82 | $ heroku autocomplete 83 | ``` 84 | - Esse comando irá abrir o site de login, faça login com seu usuário e senha 85 | 86 | ## Node & NPM 87 | ``` 88 | $ brew install node 89 | ``` 90 | 91 | ## YARN (Caso queira usar o YARN ao invés do NPM) 92 | 93 | ``` 94 | $ brew install yarn 95 | ``` 96 | 97 | ## VS Code 98 | 99 | 1. Download Visual Studio Code for macOS. https://go.microsoft.com/fwlink/?LinkID=534106 100 | 2. No Finder abrir a pasta de downloads e localizar o arquivo baixado. 101 | 3. Arrastar o Visual Studio Code.app para a pasta Applications , para que ele fique disponível no macOS Launchpad. 102 | 5. Adicionar VS Code na Dock clicando com o botão direito no icone e no menu de contexto selecionar: Options, Keep in Dock. 103 | 104 | ## Git 105 | ``` 106 | $ brew install git 107 | ``` 108 | -------------------------------------------------------------------------------- /_instalacao/windows/README.md: -------------------------------------------------------------------------------- 1 | # SDS: Instalação das ferramentas no Windows 2 | 3 | ## ATENÇÃO: 4 | 5 | **É MUITO IMPORTANTE que todos instalem as mesmas versões para evitar imprevistos durante a construção do projeto, e aumentar as chances de que suas dúvidas sejam respondidas.** 6 | 7 | ## Ferramentas que você deverá instalar no seu computador: 8 | 9 | - JDK 11 10 | - STS 11 | - Postman 12 | - Postgresql 12 e pgAdmin 13 | - Heroku CLI 14 | - NPM 15 | - VS Code 16 | - Git 17 | 18 | ## Playlist do Youtube mostrando a instalação 19 | 20 | https://www.youtube.com/playlist?list=PLNuUvBZGBA8kMTSPMmmNiRm2z0gRxXxox 21 | 22 | -------------------------------------------------------------------------------- /episodio1/README.md: -------------------------------------------------------------------------------- 1 | # ![DevSuperior logo](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/devsuperior-logo-small.png) Semana Spring React - Episódio 1 2 | > *Crie um app inédito para seu portfólio com as tecnologias mais demandadas do mercado* 3 | 4 | ## Realização 5 | [DevSuperior - Escola de programação](https://devsuperior.com.br) 6 | 7 | [![DevSuperior no Instagram](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/ig-icon.png)](https://instagram.com/devsuperior.ig) 8 | [![DevSuperior no Youtube](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/yt-icon.png)](https://youtube.com/devsuperior) 9 | 10 | ## Objetivos do projeto para esta aula 11 | - Criar projetos backend e frontend 12 | - Salvar os projeto no Github em monorepo 13 | - Montar o visual estático do front end 14 | - Publicar o front end no Netlify 15 | 16 | ## AVISO: as aulas ficarão disponíveis somente até domingo às 23h59 17 | 18 | ## Checklist 19 | 20 | ### Passo 0: preparação 21 | 22 | - Dica: extensões do VS Code 23 | 24 | - Criar pastas do projeto 25 | 26 | ![DevSuperior no Instagram](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/pastas-sds3.png) 27 | 28 | - Conferir Yarn 29 | ```bash 30 | yarn -v 31 | npm install --global yarn 32 | ``` 33 | 34 | ### Passo 1: criar projetos 35 | - Criar projeto ReactJS com `create-react-app`: 36 | ```bash 37 | npx create-react-app frontend --template typescript 38 | ``` 39 | - *Lembrete: excluir repositório Git do projeto ReactJS* 40 | - Criar projeto Spring Boot no `Spring Initializr` com as seguintes dependências: 41 | - Web 42 | - JPA 43 | - H2 44 | - Postgres 45 | - Security 46 | - Se tiver com erro no pom.xml, tentar: 47 | - Botão direito no projeto -> Maven -> Update project (force update) 48 | - Menu Project -> Clean 49 | - Apagar pasta .m2 e deixar o STS refazer o download 50 | - **COMMIT: Project created** 51 | 52 | - *Lembrete: ver extensões e arquivos ocultos* 53 | - Salvar o projeto no seu Github 54 | ```bash 55 | git config --global user.name 56 | git config --global user.email 57 | 58 | git init 59 | 60 | git add . 61 | 62 | git commit -m "Project created" 63 | 64 | git remote add origin 65 | 66 | git push -u origin main 67 | ``` 68 | ### Passo 2: "limpar" o projeto ReactJS 69 | - Limpar projeto ReactJS / tsconfig.json 70 | - Arquivo _redirects 71 | ``` 72 | /* /index.html 200 73 | ``` 74 | - **COMMIT: Project clean** 75 | ### Passo 3: adicionar Bootstrap e CSS ao projeto 76 | - Bootstrap 77 | ``` 78 | yarn add bootstrap 79 | ``` 80 | ``` 81 | (index.tsx) import 'bootstrap/dist/css/bootstrap.css'; 82 | ``` 83 | - Assets e CSS 84 | ```css 85 | @import url('https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap'); 86 | :root { 87 | --color-primary: #FF8400; 88 | } 89 | 90 | html, body { 91 | height: 100%; 92 | font-family: "Ubuntu", sans-serif; 93 | } 94 | 95 | #root { 96 | display: flex; 97 | flex-direction: column; 98 | height: 100%; 99 | } 100 | 101 | .content { 102 | flex: 1 0 auto; 103 | } 104 | 105 | .footer { 106 | flex-shrink: 0; 107 | text-align: center; 108 | } 109 | 110 | .bg-primary { 111 | background-color: var(--color-primary) !important; 112 | } 113 | 114 | .text-primary { 115 | color: var(--color-primary) !important; 116 | } 117 | ``` 118 | ``` 119 | (index.tsx) import 'assets/css/styles.css'; 120 | ``` 121 | - **COMMIT: Bootstrap** 122 | ### Passo 4: adicionar componentes estáticos básicos 123 | - Navbar 124 | ```html 125 |
126 |
127 | 130 |
131 |
132 | ``` 133 | - Footer 134 | ```html 135 |
136 |
137 |

App desenvolvido por Nelio Alves

138 |

Semana Spring React
139 | Evento promovido pela escola DevSuperior: @devsuperior.ig

140 |
141 |
142 | ``` 143 | - DataTable 144 | ```html 145 |
146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 |
DataVendedorClientes visitadosNegócios fechadosValor
22/04/2021Barry Allen342515017.00
166 |
167 | ``` 168 | - **COMMIT: Basic static components** 169 | ### Passo 5: adicionar gráficos estáticos 170 | - Apex Charts 171 | ```bash 172 | yarn add apexcharts 173 | yarn add react-apexcharts 174 | ``` 175 | - BarChart 176 | ```javascript 177 | const options = { 178 | plotOptions: { 179 | bar: { 180 | horizontal: true, 181 | } 182 | }, 183 | }; 184 | 185 | const mockData = { 186 | labels: { 187 | categories: ['Anakin', 'Barry Allen', 'Kal-El', 'Logan', 'Padmé'] 188 | }, 189 | series: [ 190 | { 191 | name: "% Sucesso", 192 | data: [43.6, 67.1, 67.7, 45.6, 71.1] 193 | } 194 | ] 195 | }; 196 | ``` 197 | - DonutChart 198 | ```javascript 199 | const mockData = { 200 | series: [477138, 499928, 444867, 220426, 473088], 201 | labels: ['Anakin', 'Barry Allen', 'Kal-El', 'Logan', 'Padmé'] 202 | } 203 | 204 | const options = { 205 | legend: { 206 | show: true 207 | } 208 | } 209 | ``` 210 | - **COMMIT: Static charts** 211 | ### Passo 6: implantação no Netlify 212 | - Deploy básico 213 | - Base directory: frontend 214 | - Build command: yarn build 215 | - Publish directory: frontend/build 216 | 217 | - Configurações adicionais 218 | - Site settings -> Domain Management: (colocar o nome que você quiser) 219 | - Deploys -> Trigger deploy 220 | 221 | ## PARABÉNS! 222 | 223 | ![Parabéns!](https://raw.githubusercontent.com/devsuperior/bds-assets/main/img/trophy.png) 224 | 225 | - Quero muito saber seu feedback 226 | - O que você está achando da nossa abordagem? 227 | - Você está conseguindo acompanhar? 228 | - O que você está achando do evento? 229 | - Participe 230 | - Comente na página da Semana Spring React 231 | - Divulgue seu projeto no Linkedin e marque a DevSuperior 232 | -------------------------------------------------------------------------------- /episodio2/README.md: -------------------------------------------------------------------------------- 1 | # ![DevSuperior logo](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/devsuperior-logo-small.png) Semana Spring React - Episódio 2 2 | > *Crie um app inédito para seu portfólio com as tecnologias mais demandadas do mercado* 3 | 4 | ## Realização 5 | [DevSuperior - Escola de programação](https://devsuperior.com.br) 6 | 7 | [![DevSuperior no Instagram](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/ig-icon.png)](https://instagram.com/devsuperior.ig) 8 | [![DevSuperior no Youtube](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/yt-icon.png)](https://youtube.com/devsuperior) 9 | 10 | ## Objetivos do projeto para esta aula 11 | - Implementar o back end 12 | - Modelo de domínio 13 | - Estruturar o back end no padrão camadas 14 | - Consulta paginada de vendas 15 | - Consultas agrupadas para gráficos 16 | - Implantação na nuvem 17 | 18 | ## AVISO: as aulas ficarão disponíveis somente até domingo às 23h59 19 | 20 | ## Checklist 21 | 22 | ### Entendendo o modelo de dados 23 | 24 | https://github.com/devsuperior/sds4/raw/main/_assets/dados.xlsx 25 | 26 | ### Passo 1: configuração de segurança 27 | 28 | ```java 29 | @Configuration 30 | @EnableWebSecurity 31 | public class SecurityConfig extends WebSecurityConfigurerAdapter { 32 | 33 | @Autowired 34 | private Environment env; 35 | 36 | @Override 37 | protected void configure(HttpSecurity http) throws Exception { 38 | if (Arrays.asList(env.getActiveProfiles()).contains("test")) { 39 | http.headers().frameOptions().disable(); 40 | } 41 | 42 | http.cors().and().csrf().disable(); 43 | http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 44 | http.authorizeRequests().anyRequest().permitAll(); 45 | } 46 | 47 | @Bean 48 | CorsConfigurationSource corsConfigurationSource() { 49 | CorsConfiguration configuration = new CorsConfiguration().applyPermitDefaultValues(); 50 | configuration.setAllowedMethods(Arrays.asList("POST", "GET", "PUT", "DELETE", "OPTIONS")); 51 | final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 52 | source.registerCorsConfiguration("/**", configuration); 53 | return source; 54 | } 55 | } 56 | ``` 57 | - **COMMIT: Security config** 58 | 59 | ### Passo 2: criar as entidades e o seed do banco 60 | 61 | #### Modelo conceitual 62 | ![Image](https://github.com/devsuperior/bds-assets/raw/main/sds/sds3-mc.png "Modelo conceitual") 63 | 64 | #### application.properties 65 | ``` 66 | spring.jpa.open-in-view=false 67 | 68 | spring.datasource.url=jdbc:h2:mem:testdb 69 | spring.datasource.username=sa 70 | spring.datasource.password= 71 | 72 | spring.h2.console.enabled=true 73 | spring.h2.console.path=/h2-console 74 | 75 | spring.jpa.show-sql=true 76 | spring.jpa.properties.hibernate.format_sql=true 77 | ``` 78 | 79 | #### Seed do banco de dados 80 | ```sql 81 | INSERT INTO tb_sellers(name) VALUES ('Logan'); 82 | INSERT INTO tb_sellers(name) VALUES ('Anakin'); 83 | INSERT INTO tb_sellers(name) VALUES ('BarryAllen'); 84 | INSERT INTO tb_sellers(name) VALUES ('Kal-El'); 85 | INSERT INTO tb_sellers(name) VALUES ('Padme'); 86 | 87 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,83,66,5501.0,'2021-04-01'); 88 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,113,78,8290.0,'2021-03-31'); 89 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,36,12,6096.0,'2021-03-30'); 90 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,42,22,3223.0,'2021-03-27'); 91 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,38,12,15017.0,'2021-03-26'); 92 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,88,52,20899.0,'2021-03-21'); 93 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,95,66,12383.0,'2021-03-17'); 94 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,117,78,10748.0,'2021-03-17'); 95 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,114,71,22274.0,'2021-03-15'); 96 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,127,96,19284.0,'2021-03-14'); 97 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,44,13,6871.0,'2021-03-09'); 98 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,49,25,9034.0,'2021-03-05'); 99 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,105,84,8114.0,'2021-03-04'); 100 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,94,65,21628.0,'2021-03-03'); 101 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,97,46,21707.0,'2021-02-28'); 102 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,104,71,12652.0,'2021-02-10'); 103 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,76,14,19349.0,'2021-02-09'); 104 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,154,78,21216.0,'2021-02-08'); 105 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,133,88,12561.0,'2021-02-03'); 106 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,50,31,15963.0,'2021-01-31'); 107 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,137,70,19349.0,'2021-01-25'); 108 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,53,33,9103.0,'2021-01-16'); 109 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,184,93,12927.0,'2021-01-10'); 110 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,35,12,6537.0,'2021-01-08'); 111 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,93,55,19890.0,'2021-01-01'); 112 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,168,92,6299.0,'2020-12-28'); 113 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,48,13,22411.0,'2020-12-26'); 114 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,107,67,9788.0,'2020-12-24'); 115 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,106,62,18942.0,'2020-12-20'); 116 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,40,26,11731.0,'2020-12-18'); 117 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,101,68,19882.0,'2020-12-18'); 118 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,185,100,14618.0,'2020-12-17'); 119 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,82,47,7951.0,'2020-12-15'); 120 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,86,45,4147.0,'2020-12-14'); 121 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,95,88,12943.0,'2020-12-09'); 122 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,75,58,18747.0,'2020-12-02'); 123 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,96,50,12624.0,'2020-12-01'); 124 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,79,40,14770.0,'2020-11-21'); 125 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,73,46,14124.0,'2020-11-20'); 126 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,92,58,20953.0,'2020-11-20'); 127 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,43,30,9690.0,'2020-11-18'); 128 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,58,30,11396.0,'2020-11-14'); 129 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,49,14,5119.0,'2020-11-14'); 130 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,53,23,8206.0,'2020-11-12'); 131 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,49,25,8269.0,'2020-11-10'); 132 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,53,29,17984.0,'2020-11-09'); 133 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,43,26,3056.0,'2020-11-08'); 134 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,51,21,8624.0,'2020-11-06'); 135 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,64,41,10959.0,'2020-11-03'); 136 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,75,23,15883.0,'2020-10-30'); 137 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,51,44,14038.0,'2020-10-27'); 138 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,141,81,13535.0,'2020-10-26'); 139 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,135,98,17241.0,'2020-10-25'); 140 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,116,66,16415.0,'2020-10-19'); 141 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,60,44,5329.0,'2020-10-14'); 142 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,63,32,16618.0,'2020-10-07'); 143 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,176,100,5062.0,'2020-10-01'); 144 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,118,45,22235.0,'2020-09-29'); 145 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,150,97,14484.0,'2020-09-26'); 146 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,115,63,18081.0,'2020-09-24'); 147 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,159,88,16101.0,'2020-09-23'); 148 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,76,45,11150.0,'2020-09-22'); 149 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,65,63,17982.0,'2020-09-09'); 150 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,90,68,15927.0,'2020-09-08'); 151 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,22,12,9793.0,'2020-09-06'); 152 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,19,11,4185.0,'2020-09-05'); 153 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,68,21,15541.0,'2020-09-04'); 154 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,64,47,7287.0,'2020-09-04'); 155 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,153,92,17913.0,'2020-09-04'); 156 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,93,53,12648.0,'2020-09-02'); 157 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,78,32,12021.0,'2020-08-30'); 158 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,94,49,18787.0,'2020-08-29'); 159 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,54,28,3974.0,'2020-08-28'); 160 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,45,25,5681.0,'2020-08-26'); 161 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,11,1,4008.0,'2020-08-14'); 162 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,118,80,5218.0,'2020-08-13'); 163 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,52,21,21220.0,'2020-08-09'); 164 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,127,23,8831.0,'2020-08-06'); 165 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,78,23,13900.0,'2020-08-04'); 166 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,102,52,22086.0,'2020-08-03'); 167 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,54,53,15731.0,'2020-07-31'); 168 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,173,93,10816.0,'2020-07-22'); 169 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,60,45,17633.0,'2020-07-20'); 170 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,138,72,14528.0,'2020-07-19'); 171 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,147,96,21582.0,'2020-07-17'); 172 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,32,12,9751.0,'2020-07-13'); 173 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,83,59,8496.0,'2020-07-08'); 174 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,58,48,5283.0,'2020-07-07'); 175 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,55,35,20474.0,'2020-07-05'); 176 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,84,34,5787.0,'2020-07-01'); 177 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,79,68,11976.0,'2020-06-27'); 178 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,121,67,18196.0,'2020-06-16'); 179 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,26,14,4255.0,'2020-06-14'); 180 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,55,42,13249.0,'2020-06-14'); 181 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,73,65,20751.0,'2020-06-10'); 182 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,47,25,7318.0,'2020-06-04'); 183 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,72,60,15608.0,'2020-06-03'); 184 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,97,68,8901.0,'2020-06-03'); 185 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,68,26,13231.0,'2020-06-02'); 186 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,73,53,19476.0,'2020-05-22'); 187 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,28,23,20530.0,'2020-05-18'); 188 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,83,44,4864.0,'2020-05-13'); 189 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,82,43,21753.0,'2020-05-06'); 190 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,43,26,7362.0,'2020-05-03'); 191 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,54,23,10549.0,'2020-04-28'); 192 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,125,84,13333.0,'2020-04-25'); 193 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,44,26,7431.0,'2020-04-23'); 194 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,46,25,21099.0,'2020-04-19'); 195 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,42,28,7217.0,'2020-04-19'); 196 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,52,21,10107.0,'2020-04-18'); 197 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,121,90,18174.0,'2020-04-17'); 198 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,65,14,8095.0,'2020-04-12'); 199 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,107,74,11507.0,'2020-04-12'); 200 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,140,74,11709.0,'2020-04-09'); 201 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,95,91,8288.0,'2020-04-08'); 202 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,68,43,17016.0,'2020-04-07'); 203 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,21,20,17126.0,'2020-04-03'); 204 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,38,15,7957.0,'2020-03-31'); 205 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,53,29,20903.0,'2020-03-29'); 206 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,19,10,3987.0,'2020-03-28'); 207 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,78,34,20795.0,'2020-03-27'); 208 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,83,44,4938.0,'2020-03-26'); 209 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,32,12,6926.0,'2020-03-13'); 210 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,64,33,8193.0,'2020-03-13'); 211 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,39,39,10557.0,'2020-03-05'); 212 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,158,84,21601.0,'2020-03-02'); 213 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,12,6,7625.0,'2020-02-29'); 214 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,82,82,22465.0,'2020-02-27'); 215 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,68,56,12595.0,'2020-02-17'); 216 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,27,13,4636.0,'2020-02-16'); 217 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,52,33,10155.0,'2020-02-14'); 218 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,142,81,13610.0,'2020-02-13'); 219 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,81,45,15306.0,'2020-02-08'); 220 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,64,35,17460.0,'2020-02-07'); 221 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,48,24,21413.0,'2020-02-03'); 222 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,150,82,6505.0,'2020-01-26'); 223 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,138,95,7983.0,'2020-01-18'); 224 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,70,48,9564.0,'2020-01-16'); 225 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,162,84,7302.0,'2020-01-15'); 226 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,57,54,9126.0,'2020-01-12'); 227 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,78,60,5253.0,'2020-01-06'); 228 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,81,53,11553.0,'2020-01-04'); 229 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,90,34,16020.0,'2019-12-31'); 230 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,57,39,10253.0,'2019-12-28'); 231 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,90,53,14398.0,'2019-12-21'); 232 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,30,25,16429.0,'2019-12-16'); 233 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,58,21,5368.0,'2019-12-13'); 234 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,79,12,9928.0,'2019-12-13'); 235 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,98,77,8860.0,'2019-12-12'); 236 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,100,69,13335.0,'2019-12-09'); 237 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,41,21,7009.0,'2019-12-06'); 238 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,141,78,6100.0,'2019-12-04'); 239 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,52,36,7050.0,'2019-12-02'); 240 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,76,51,21591.0,'2019-12-01'); 241 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,38,35,19416.0,'2019-11-29'); 242 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,54,12,9400.0,'2019-11-26'); 243 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,43,25,4854.0,'2019-11-23'); 244 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (4,70,51,10740.0,'2019-11-21'); 245 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,84,78,6990.0,'2019-11-17'); 246 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,126,94,14183.0,'2019-11-17'); 247 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,89,89,17044.0,'2019-11-02'); 248 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,149,83,20988.0,'2019-11-01'); 249 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,139,76,7682.0,'2019-10-31'); 250 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,39,14,7996.0,'2019-10-29'); 251 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,44,25,5546.0,'2019-10-24'); 252 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (5,127,92,12347.0,'2019-10-23'); 253 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,53,35,16423.0,'2019-10-20'); 254 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (1,14,8,7705.0,'2019-10-16'); 255 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (2,71,18,6436.0,'2019-10-07'); 256 | INSERT INTO tb_sales(seller_id,visited,deals,amount,date) VALUES (3,78,60,6723.0,'2019-10-07'); 257 | ``` 258 | 259 | - **COMMIT: Domain model, database seed** 260 | 261 | ### Passo 3: Estruturar o projeto em camadas 262 | 263 | ### Padrão camadas adotado 264 | 265 | ![Image](https://github.com/devsuperior/bds-assets/raw/main/sds/camadas.png "Padrão camadas") 266 | 267 | - Criar repositories 268 | - Criar DTO's 269 | - Criar service 270 | - Criar controller 271 | - **COMMIT: Layers** 272 | 273 | ### Passo 4: Busca paginada de vendas 274 | 275 | - Pageable 276 | - page, size, sort 277 | - Evitando interações repetidas ao banco de dados 278 | - **COMMIT: Pagination** 279 | 280 | ### Passo 5: Buscas agrupadas (GROUP BY) 281 | 282 | - Total de vendas por vendedor 283 | - Taxa de sucesso por vendedor 284 | - **COMMIT: Group by search** 285 | 286 | ### Passo 6: Validação no Postgres local 287 | 288 | - Criar três perfis de projeto: test, dev, prod 289 | - Gerar script SQL no perfil dev 290 | - Testar projeto no banco Postgres local 291 | 292 | #### application.properties 293 | ``` 294 | spring.profiles.active=test 295 | 296 | spring.jpa.open-in-view=false 297 | ``` 298 | 299 | #### application-dev.properties 300 | ``` 301 | #spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata 302 | #spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create 303 | #spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql 304 | #spring.jpa.properties.hibernate.hbm2ddl.delimiter=; 305 | 306 | spring.datasource.url=jdbc:postgresql://localhost:5432/dsvendas 307 | spring.datasource.username=postgres 308 | spring.datasource.password=1234567 309 | 310 | spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true 311 | spring.jpa.hibernate.ddl-auto=none 312 | ``` 313 | 314 | #### application-prod.properties 315 | ``` 316 | spring.datasource.url=${DATABASE_URL} 317 | ``` 318 | 319 | #### application.properties 320 | ``` 321 | spring.profiles.active=${APP_PROFILE:test} 322 | 323 | spring.jpa.open-in-view=false 324 | ``` 325 | 326 | #### system.properties 327 | ``` 328 | java.runtime.version=11 329 | ``` 330 | 331 | - **COMMIT: First homolog** 332 | 333 | ### Passo 7: Implantação no Heroku 334 | - Criar app no Heroku 335 | - Provisionar banco Postgres 336 | - Definir variável APP_PROFILE=prod 337 | - Conectar ao banco via pgAdmin 338 | - Criar seed do banco 339 | 340 | ```bash 341 | heroku -v 342 | heroku login 343 | heroku git:remote -a 344 | git remote -v 345 | git subtree push --prefix backend heroku main 346 | ``` 347 | 348 | - **PARABÉNS!** 349 | 350 | ![Parabéns!](https://raw.githubusercontent.com/devsuperior/bds-assets/main/img/trophy.png) 351 | 352 | - Quero muito saber seu feedback 353 | - O que você está achando da nossa abordagem? 354 | - Você está conseguindo acompanhar? 355 | - O que você está achando do evento? 356 | - Participe 357 | - Comente na página da Semana Spring React 358 | - Divulgue seu projeto no Linkedin e marque a DevSuperior 359 | -------------------------------------------------------------------------------- /episodio3/README.md: -------------------------------------------------------------------------------- 1 | # ![DevSuperior logo](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/devsuperior-logo-small.png) Semana Spring React - Episódio 3 2 | > *Crie um app inédito para seu portfólio com as tecnologias mais demandadas do mercado* 3 | 4 | ## Realização 5 | [DevSuperior - Escola de programação](https://devsuperior.com.br) 6 | 7 | [![DevSuperior no Instagram](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/ig-icon.png)](https://instagram.com/devsuperior.ig) 8 | [![DevSuperior no Youtube](https://raw.githubusercontent.com/devsuperior/bds-assets/main/ds/yt-icon.png)](https://youtube.com/devsuperior) 9 | 10 | ## Objetivos do projeto para esta aula 11 | - Integrar back end e front end 12 | - Três pilares do React 13 | - Componentes 14 | - Props 15 | - Estado 16 | - React Hooks 17 | - useState 18 | - useEffect 19 | - Libs 20 | - React Router DOM 21 | - Axios 22 | 23 | ## AVISO: as aulas ficarão disponíveis somente até domingo às 23h59 24 | 25 | ## Checklist 26 | 27 | ### Passo 1: Rotas 28 | 29 | - Instalar React Router DOM 30 | ```bash 31 | yarn add react-router-dom 32 | 33 | yarn add @types/react-router-dom -D 34 | ``` 35 | - Criar páginas Home e Dashboard 36 | - Criar arquivo de rotas `Routes.tsx` 37 | - **COMMIT: Routes** 38 | 39 | ### Passo 2: Página Home e navegações 40 | 41 | ```html 42 |
43 |
44 |

DSVendas

45 |

Analise o desempenho das suas vendas por diferentes perspectivas

46 |
47 |

Esta aplicação consiste em exibir um dashboard a partir de dados fornecidos por um back end construído com Spring Boot.

48 |
49 |
50 | ``` 51 | - Fazer um link na Home para Dashboard 52 | - Fazer um link na NavBar para Home 53 | 54 | - **COMMIT: Home, navigation** 55 | 56 | ### Passo 3: First request 57 | 58 | - Instalar Axios 59 | ```bash 60 | yarn add axios 61 | ``` 62 | - Definir BASE_URL 63 | - Definir tipo SaleSum 64 | - Definir tipo local ChartData em DonutChart 65 | - Fazer a requisição e tratar os dados 66 | 67 | - **COMMIT: First request** 68 | 69 | ### Passo 4: DonutChart integration 70 | 71 | ``` 72 | Hook: useState 73 | Manter estado no componente 74 | ``` 75 | ``` 76 | Hook: useEffect 77 | Executar algo na instanciação ou destruição do componente, observar estado 78 | ``` 79 | 80 | - **COMMIT: DonutChart integration** 81 | 82 | ### Passo 5: BarChart integration 83 | 84 | - Definir função auxiliar round: 85 | ```javascript 86 | export const round = (value: number, precision: number) => { 87 | var multiplier = Math.pow(10, precision || 0); 88 | return Math.round(value * multiplier) / multiplier; 89 | } 90 | ``` 91 | 92 | - Definir tipo SaleSuccess 93 | - Definir tipo local ChartData em BarChart 94 | 95 | - **COMMIT: BarChart integration** 96 | 97 | ### Passo 6: DataTable integration 98 | 99 | - Instalar date-fns ao projeto 100 | ```bash 101 | yarn add date-fns 102 | ``` 103 | - Criar tipos Seller, Sale, SalePage 104 | - Criar função auxiliar formatLocalDate 105 | ```javascript 106 | export const formatLocalDate = (date: string, pattern: string) => { 107 | const dt = new Date(date); 108 | const dtDateOnly = new Date(dt.valueOf() + dt.getTimezoneOffset() * 60 * 1000); 109 | return format(dtDateOnly, pattern); 110 | } 111 | ``` 112 | 113 | - **COMMIT: DataTable integration** 114 | 115 | ### Passo 7: Pagination 116 | 117 | ``` 118 | Props 119 | Argumentos que um componente React pode receber 120 | ``` 121 | 122 | - Criar componente Pagination 123 | ```html 124 |
125 | 138 |
139 | ``` 140 | 141 | - **COMMIT: Pagination** 142 | 143 | ## **PARABÉNS!** 144 | 145 | ![Parabéns!](https://raw.githubusercontent.com/devsuperior/bds-assets/main/img/trophy.png) 146 | 147 | - Quero muito saber seu feedback 148 | - O que você está achando da nossa abordagem? 149 | - Você está conseguindo acompanhar? 150 | - O que você está achando do evento? 151 | - Participe 152 | - Comente na página da Semana Spring React 153 | - Divulgue seu projeto no Linkedin e marque a DevSuperior 154 | 155 | --------------------------------------------------------------------------------