Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b7b8a28

Browse files
Merge remote-tracking branch 'origin/master'
# Conflicts: # src/main/java/com/example/App.java
2 parents 1112890 + 01b0fb0 commit b7b8a28

File tree

10 files changed

+10329
-8
lines changed

10 files changed

+10329
-8
lines changed

‎.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
.env
2+
random.sql
23

34
# Log file
45
*.log
56

7+
node_modules/
68
target/
79
out/
810
bin/

‎.gitpod.Dockerfile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
FROM gitpod/workspace-postgres
22
USER gitpod
3-
RUN bash -c ". ~/.sdkman/bin/sdkman-init.sh && \
4-
sdk install java 17.0.7-amzn && \
5-
sdk default java 17.0.7-amzn"
3+
RUN bash -c "chmod +x ~/.sdkman/bin/sdkman-init.sh && . ~/.sdkman/bin/sdkman-init.sh && sdk install java 17.0.7-amzn && sdk default java 17.0.7-amzn"
4+
RUN bash -c "echo '. ~/.sdkman/bin/sdkman-init.sh' >> ~/.zshrc"

‎.gitpod.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ vscode:
66
extensions:
77
- cweijan.vscode-mysql-client2
88
- vscjava.vscode-java-pack
9+
- redhat.java
10+
- vscjava.vscode-java-debug
11+
- vscjava.vscode-java-dependency
12+
- vscjava.vscode-java-test
13+
- vscjava.vscode-maven

‎.vscode/settings.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"java.jdt.ls.java.home": "~/.sdkman/candidates/java/current",
3+
"java.inlayHints.parameterNames.enabled": "none",
34
"maven.terminal.useJavaHome": true,
45
"java.completion.favoriteStaticMembers": [
56
"org.junit.Assert.*",
@@ -13,5 +14,6 @@
1314
"org.mockito.Answers.*"
1415
],
1516
"maven.executable.preferMavenWrapper": false,
16-
"terminal.integrated.defaultProfile.linux": "zsh"
17-
}
17+
"terminal.integrated.defaultProfile.linux": "zsh",
18+
"java.configuration.updateBuildConfiguration": "automatic"
19+
}

‎README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
## Postgres Playground
1+
## Postgres e Java Playground
22

3-
[![](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/manoelcampos/postgres-playground)
3+
[![](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/manoelcampos/java-postgres-playground)
44

5+
> **Warning**
6+
> - O gitpod.io não funciona se você tiver a extensão do tradutor habilitada no seu navegador.
7+
> - O endereço do repositório no GitHub a ser incluído no endereço do gitpod deve obrigatoriamente ser https
58
69
Clique no botão acima para abrir o projeto no [GitPod](https://gitpod.io)
710
contendo um servidor Postgres, um VS Code e uma extensão para administração

‎comandos-git.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# 1. Você recebeu um projeto em um repositório git local, mas SEM um endereço remoto (acho pouco provável)
2+
3+
```
4+
# A. Pode fazer todos os comandos só no final da prova
5+
git remote add origin URL_REPOSITORIO_REMOTO
6+
7+
# B. Adicionar todos os arquivos no repositório git local
8+
git add .
9+
10+
# C. Confirmar as alteracoes no repositório local
11+
# O comando pode dar erro, pedindo pra configurar nome e email. É só seguir as instruções e tentar novamente.
12+
git commit -m "Alteracoes"
13+
14+
# D. Enviar as alterações pro repositório remoto
15+
# Depois de executar, ele pode pedir pra executar o comando de uma forma diferente. É só copiar e colar como ele mostrar
16+
git push
17+
```
18+
19+
# 2. Você recebeu um projeto em um repositório git local já com o endereço do repositório remoto
20+
21+
Execute todos os passos, a partir do B (pode fazer todos os comandos só no final da prova).
22+
23+
# 3. Você NÃO recebeu um projeto em um repositório git local na máquina da prova e tem que baixar
24+
25+
## 3.1 Fazer no início da prova
26+
```
27+
# Baixar o projeto pra máquina local no início da prova
28+
# O comando cria uma pasta com o nome que aparece no final da URL e já configura o remote
29+
git clone URL_REPOSITORIO_REMOTO
30+
```
31+
32+
## 3.2 Fazer no final da prova
33+
34+
Execute todos os passos, a partir do B (estes pode fazer só no final da prova).
35+
36+
# 4. Você tem que criar um projeto e repositório git do zero (acho improvável)
37+
38+
## 4.1 Fazer no início da prova
39+
40+
```
41+
# Criar uma pasta para o projeto
42+
43+
# Abrir a pasta no editor/IDE que fornecerem (no VSCode é File >> Open Folder)
44+
45+
# Abrir um terminal, que já deve vir dentro da pasta do projeto que vc abriu
46+
47+
# Criar um repositório local
48+
git init
49+
```
50+
51+
## 4.2 Fazer no final da prova
52+
53+
Executar todos os passos, a partir do A

‎dados.sql

Lines changed: 9999 additions & 1 deletion
Large diffs are not rendered by default.

‎gerar-dados/index.js

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
const { faker } = require('@faker-js/faker');
2+
3+
const lojas = 20, produtos = 200, vendas = 1000
4+
5+
function formatInsert(tableName, columns, values) {
6+
const newValues = values.map(val => {
7+
if(typeof val !== 'string')
8+
return val
9+
10+
const quotes = val.startsWith("'")
11+
val = val.replaceAll("'", "")
12+
return quotes ? `'${val}'` : val
13+
})
14+
15+
return `INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${newValues.join(', ')});`;
16+
}
17+
18+
function generateClienteInserts(numInserts) {
19+
const inserts = [];
20+
21+
for (let i = 0; i < numInserts; i++) {
22+
const nome = faker.person.fullName();
23+
const cpf = faker.number.bigInt({ min: 10000000000, max: 99999999999 });
24+
const cidade_id = faker.number.int({ min: 1, max: 5564 });
25+
const data_nascimento = faker.date.birthdate().toISOString().split('T')[0];
26+
27+
const insert = formatInsert('cliente', ['nome', 'cpf', 'cidade_id', 'data_nascimento'], [
28+
`'${nome}'`,
29+
`'${cpf}'`,
30+
cidade_id,
31+
`'${data_nascimento}'`
32+
]);
33+
34+
inserts.push(insert);
35+
}
36+
37+
return inserts;
38+
}
39+
40+
function generateLojaInserts() {
41+
const inserts = [];
42+
43+
for (let i = 0; i < lojas; i++) {
44+
const cidade_id = faker.number.int({ min: 1, max: 5564 });
45+
const data_inauguracao = faker.date.birthdate().toISOString().split('T')[0];
46+
47+
const insert = formatInsert('loja', ['cidade_id', 'data_inauguracao'], [
48+
cidade_id,
49+
`'${data_inauguracao}'`
50+
]);
51+
52+
inserts.push(insert);
53+
}
54+
55+
return inserts;
56+
}
57+
58+
function generateFuncionarioInserts(numInserts) {
59+
const inserts = [];
60+
61+
for (let i = 0; i < numInserts; i++) {
62+
const nome = faker.person.fullName();
63+
const cpf = faker.number.int({ min: 10000000000, max: 99999999999 });
64+
const loja_id = faker.number.int({ min: 1, max: lojas });
65+
const data_nascimento = faker.date.birthdate().toISOString().split('T')[0];
66+
67+
const insert = formatInsert('funcionario', ['nome', 'cpf', 'loja_id', 'data_nascimento'], [
68+
`'${nome}'`,
69+
`'${cpf}'`,
70+
loja_id,
71+
`'${data_nascimento}'`
72+
]);
73+
74+
inserts.push(insert);
75+
}
76+
77+
return inserts;
78+
}
79+
80+
function generateMarcaInserts(numInserts) {
81+
const inserts = [];
82+
83+
for (let i = 0; i < numInserts; i++) {
84+
const nome = faker.company.name();
85+
86+
const insert = formatInsert('marca', ['nome'], [`'${nome}'`]);
87+
inserts.push(insert);
88+
}
89+
90+
return inserts;
91+
}
92+
93+
function generateProdutoInserts() {
94+
const inserts = [];
95+
96+
for (let i = 0; i < produtos; i++) {
97+
const nome = faker.commerce.productName();
98+
const marca_id = faker.number.int({ min: 1, max: 5 });
99+
const valor = faker.number.int({ min: 10, max: 1000 });
100+
101+
const insert = formatInsert('produto', ['nome', 'marca_id', 'valor'], [
102+
`'${nome}'`,
103+
marca_id,
104+
valor
105+
]);
106+
107+
inserts.push(insert);
108+
}
109+
110+
return inserts;
111+
}
112+
113+
function generateEstoqueInserts() {
114+
const inserts = [];
115+
const quant = 10000;
116+
117+
for (let loja_id = 1; loja_id <= lojas; loja_id++) {
118+
for (let produto_id = 1; produto_id <= produtos; produto_id++) {
119+
const insert = formatInsert('estoque', ['produto_id', 'loja_id', 'quant'], [
120+
produto_id,
121+
loja_id,
122+
quant
123+
]);
124+
125+
inserts.push(insert);
126+
}
127+
}
128+
129+
return inserts;
130+
}
131+
132+
function generateVendaInserts() {
133+
const inserts = [];
134+
135+
for (let i = 0; i < vendas; i++) {
136+
const loja_id = faker.number.int({ min: 1, max: 10 });
137+
const cliente_id = faker.number.int({ min: 1, max: 100 });
138+
const funcionario_id = faker.number.int({ min: 1, max: 50 });
139+
140+
const insert = formatInsert('venda', ['loja_id', 'cliente_id', 'funcionario_id'], [
141+
loja_id,
142+
cliente_id,
143+
funcionario_id
144+
]);
145+
146+
inserts.push(insert);
147+
}
148+
149+
return inserts;
150+
}
151+
152+
function generateItemVendaInserts() {
153+
const inserts = [];
154+
155+
for (let venda_id = 1; venda_id <= vendas; venda_id++) {
156+
const totalItens = faker.number.int({ min: 1, max: 8 });
157+
const produtoIdSet = new Set()
158+
for (let i = 1; i <= totalItens; i++) {
159+
const produto_id = faker.number.int({ min: 1, max: produtos });
160+
produtoIdSet.add(produto_id)
161+
}
162+
163+
produtoIdSet.forEach(produto_id => {
164+
const quant = faker.number.int({ min: 1, max: 10 });
165+
const valor = faker.number.int({ min: 10, max: 100 });
166+
167+
const insert = formatInsert('item_venda', ['venda_id', 'produto_id', 'quant', 'valor'], [
168+
venda_id,
169+
produto_id,
170+
quant,
171+
valor
172+
]);
173+
174+
inserts.push(insert);
175+
})
176+
}
177+
178+
return inserts;
179+
}
180+
181+
const clienteInserts = generateClienteInserts(100);
182+
const lojaInserts = generateLojaInserts();
183+
const funcionarioInserts = generateFuncionarioInserts(50);
184+
const marcaInserts = generateMarcaInserts(40);
185+
const produtoInserts = generateProdutoInserts();
186+
const estoqueInserts = generateEstoqueInserts();
187+
const vendaInserts = generateVendaInserts();
188+
const itemVendaInserts = generateItemVendaInserts();
189+
190+
// Imprimir os inserts gerados
191+
console.log('');
192+
clienteInserts.forEach(insert => console.log(insert));
193+
194+
console.log('');
195+
lojaInserts.forEach(insert => console.log(insert));
196+
197+
console.log('');
198+
funcionarioInserts.forEach(insert => console.log(insert));
199+
200+
console.log('');
201+
marcaInserts.forEach(insert => console.log(insert));
202+
203+
console.log('');
204+
produtoInserts.forEach(insert => console.log(insert));
205+
206+
console.log('');
207+
estoqueInserts.forEach(insert => console.log(insert));
208+
209+
console.log('');
210+
vendaInserts.forEach(insert => console.log(insert));
211+
212+
console.log('');
213+
itemVendaInserts.forEach(insert => console.log(insert));

‎gerar-dados/package-lock.json

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎gerar-dados/package.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "gerar-dados",
3+
"version": "1.0.0",
4+
"description": "Gerador de dados aleatórios usando https://fakerjs.dev",
5+
"main": "index.js",
6+
"scripts": {
7+
"start": "node index.js"
8+
},
9+
"keywords": [],
10+
"author": "Manoel Campos da Silva Filho",
11+
"license": "ISC",
12+
"dependencies": {
13+
"@faker-js/faker": "^8.0.2"
14+
}
15+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /