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 8786e73

Browse files
Atualiza gerador de dados para não violar FKs e UK
1 parent 5f66201 commit 8786e73

File tree

1 file changed

+52
-56
lines changed

1 file changed

+52
-56
lines changed

‎gerar-dados/index.js‎

Lines changed: 52 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
const { faker } = require('@faker-js/faker');
22

3+
const lojas = 20, produtos = 200, vendas = 1000
4+
35
// Função auxiliar para gerar uma string formatada para o insert
46
function formatInsert(table, columns, values) {
57
const newValues = values.map(val => {
8+
if(typeof val !== 'string')
9+
return val
10+
611
const quotes = val.startsWith("'")
712
val = val.replaceAll("'", "")
813
return quotes ? `'${val}'` : val
@@ -35,10 +40,10 @@ function generateClienteInserts(numInserts) {
3540
}
3641

3742
// Gerar inserts para a tabela loja
38-
function generateLojaInserts(numInserts) {
43+
function generateLojaInserts() {
3944
const inserts = [];
4045

41-
for (let i = 0; i < numInserts; i++) {
46+
for (let i = 0; i < lojas; i++) {
4247
const cidade_id = faker.number.int({ min: 1, max: 5564 });
4348
const data_inauguracao = faker.date.birthdate().toISOString().split('T')[0];
4449

@@ -60,7 +65,7 @@ function generateFuncionarioInserts(numInserts) {
6065
for (let i = 0; i < numInserts; i++) {
6166
const nome = faker.person.fullName();
6267
const cpf = faker.number.int({ min: 10000000000, max: 99999999999 });
63-
const loja_id = faker.number.int({ min: 1, max: 5 });
68+
const loja_id = faker.number.int({ min: 1, max: lojas });
6469
const data_nascimento = faker.date.birthdate().toISOString().split('T')[0];
6570

6671
const insert = formatInsert('funcionario', ['nome', 'cpf', 'loja_id', 'data_nascimento'], [
@@ -91,10 +96,10 @@ function generateMarcaInserts(numInserts) {
9196
}
9297

9398
// Gerar inserts para a tabela produto
94-
function generateProdutoInserts(numInserts) {
99+
function generateProdutoInserts() {
95100
const inserts = [];
96101

97-
for (let i = 0; i < numInserts; i++) {
102+
for (let i = 0; i < produtos; i++) {
98103
const nome = faker.commerce.productName();
99104
const marca_id = faker.number.int({ min: 1, max: 5 });
100105
const valor = faker.number.int({ min: 10, max: 1000 });
@@ -112,31 +117,30 @@ function generateProdutoInserts(numInserts) {
112117
}
113118

114119
// Gerar inserts para a tabela estoque
115-
function generateEstoqueInserts(numInserts) {
120+
function generateEstoqueInserts() {
116121
const inserts = [];
117-
118-
for (let i = 0; i < numInserts; i++) {
119-
const produto_id = faker.number.int({ min: 1, max: 50 });
120-
const loja_id = faker.number.int({ min: 1, max: 10 });
121-
const quant = 10000;
122-
123-
const insert = formatInsert('estoque', ['produto_id', 'loja_id', 'quant'], [
124-
`${produto_id}`,
125-
`${loja_id}`,
126-
`${quant}`
127-
]);
128-
129-
inserts.push(insert);
122+
const quant = 10000;
123+
124+
for (let loja_id = 1; loja_id <= lojas; loja_id++) {
125+
for (let produto_id = 1; produto_id <= produtos; produto_id++) {
126+
const insert = formatInsert('estoque', ['produto_id', 'loja_id', 'quant'], [
127+
produto_id,
128+
loja_id,
129+
quant
130+
]);
131+
132+
inserts.push(insert);
133+
}
130134
}
131135

132136
return inserts;
133137
}
134138

135139
// Gerar inserts para a tabela venda
136-
function generateVendaInserts(numInserts) {
140+
function generateVendaInserts() {
137141
const inserts = [];
138142

139-
for (let i = 0; i < numInserts; i++) {
143+
for (let i = 0; i < vendas; i++) {
140144
const loja_id = faker.number.int({ min: 1, max: 10 });
141145
const cliente_id = faker.number.int({ min: 1, max: 100 });
142146
const funcionario_id = faker.number.int({ min: 1, max: 50 });
@@ -154,51 +158,43 @@ function generateVendaInserts(numInserts) {
154158
}
155159

156160
// Gerar inserts para a tabela item_venda
157-
function generateItemVendaInserts(numInserts) {
161+
function generateItemVendaInserts() {
158162
const inserts = [];
159163

160-
for (let i = 0; i < numInserts; i++) {
161-
const venda_id = faker.number.int({ min: 1, max: 1000 });
162-
const produto_id = faker.number.int({ min: 1, max: 50 });
163-
const quant = faker.number.int({ min: 1, max: 10 });
164-
const valor = faker.number.int({ min: 10, max: 100 });
165-
166-
const insert = formatInsert('item_venda', ['venda_id', 'produto_id', 'quant', 'valor'], [
167-
`${venda_id}`,
168-
`${produto_id}`,
169-
`${quant}`,
170-
`${valor}`
171-
]);
172-
173-
inserts.push(insert);
164+
for (let venda_id = 1; venda_id <= vendas; venda_id++) {
165+
const totalItens = faker.number.int({ min: 1, max: 8 });
166+
const produtoIdSet = new Set()
167+
for (let i = 1; i <= totalItens; i++) {
168+
const produto_id = faker.number.int({ min: 1, max: produtos });
169+
produtoIdSet.add(produto_id)
170+
}
171+
172+
produtoIdSet.forEach(produto_id => {
173+
const quant = faker.number.int({ min: 1, max: 10 });
174+
const valor = faker.number.int({ min: 10, max: 100 });
175+
176+
const insert = formatInsert('item_venda', ['venda_id', 'produto_id', 'quant', 'valor'], [
177+
`${venda_id}`,
178+
`${produto_id}`,
179+
`${quant}`,
180+
`${valor}`
181+
]);
182+
183+
inserts.push(insert);
184+
})
174185
}
175186

176187
return inserts;
177188
}
178189

179-
// Gerar 100 inserts para a tabela cliente
180190
const clienteInserts = generateClienteInserts(100);
181-
182-
// Gerar 20 inserts para a tabela loja
183-
const lojaInserts = generateLojaInserts(20);
184-
185-
// Gerar 50 inserts para a tabela funcionario
191+
const lojaInserts = generateLojaInserts();
186192
const funcionarioInserts = generateFuncionarioInserts(50);
187-
188-
// Gerar 4 inserts para a tabela marca
189193
const marcaInserts = generateMarcaInserts(40);
190-
191-
// Gerar 200 inserts para a tabela produto
192-
const produtoInserts = generateProdutoInserts(200);
193-
194-
// Gerar 500 inserts para a tabela estoque
195-
const estoqueInserts = generateEstoqueInserts(500);
196-
197-
// Gerar 1000 inserts para a tabela venda
198-
const vendaInserts = generateVendaInserts(1000);
199-
200-
// Gerar 2000 inserts para a tabela item_venda
201-
const itemVendaInserts = generateItemVendaInserts(2000);
194+
const produtoInserts = generateProdutoInserts();
195+
const estoqueInserts = generateEstoqueInserts();
196+
const vendaInserts = generateVendaInserts();
197+
const itemVendaInserts = generateItemVendaInserts();
202198

203199
// Imprimir os inserts gerados
204200
console.log('');

0 commit comments

Comments
(0)

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