1
1
const { faker } = require ( '@faker-js/faker' ) ;
2
2
3
+ const lojas = 20 , produtos = 200 , vendas = 1000
4
+
3
5
// Função auxiliar para gerar uma string formatada para o insert
4
6
function formatInsert ( table , columns , values ) {
5
7
const newValues = values . map ( val => {
8
+ if ( typeof val !== 'string' )
9
+ return val
10
+
6
11
const quotes = val . startsWith ( "'" )
7
12
val = val . replaceAll ( "'" , "" )
8
13
return quotes ? `'${ val } '` : val
@@ -35,10 +40,10 @@ function generateClienteInserts(numInserts) {
35
40
}
36
41
37
42
// Gerar inserts para a tabela loja
38
- function generateLojaInserts ( numInserts ) {
43
+ function generateLojaInserts ( ) {
39
44
const inserts = [ ] ;
40
45
41
- for ( let i = 0 ; i < numInserts ; i ++ ) {
46
+ for ( let i = 0 ; i < lojas ; i ++ ) {
42
47
const cidade_id = faker . number . int ( { min : 1 , max : 5564 } ) ;
43
48
const data_inauguracao = faker . date . birthdate ( ) . toISOString ( ) . split ( 'T' ) [ 0 ] ;
44
49
@@ -60,7 +65,7 @@ function generateFuncionarioInserts(numInserts) {
60
65
for ( let i = 0 ; i < numInserts ; i ++ ) {
61
66
const nome = faker . person . fullName ( ) ;
62
67
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 } ) ;
64
69
const data_nascimento = faker . date . birthdate ( ) . toISOString ( ) . split ( 'T' ) [ 0 ] ;
65
70
66
71
const insert = formatInsert ( 'funcionario' , [ 'nome' , 'cpf' , 'loja_id' , 'data_nascimento' ] , [
@@ -91,10 +96,10 @@ function generateMarcaInserts(numInserts) {
91
96
}
92
97
93
98
// Gerar inserts para a tabela produto
94
- function generateProdutoInserts ( numInserts ) {
99
+ function generateProdutoInserts ( ) {
95
100
const inserts = [ ] ;
96
101
97
- for ( let i = 0 ; i < numInserts ; i ++ ) {
102
+ for ( let i = 0 ; i < produtos ; i ++ ) {
98
103
const nome = faker . commerce . productName ( ) ;
99
104
const marca_id = faker . number . int ( { min : 1 , max : 5 } ) ;
100
105
const valor = faker . number . int ( { min : 10 , max : 1000 } ) ;
@@ -112,31 +117,30 @@ function generateProdutoInserts(numInserts) {
112
117
}
113
118
114
119
// Gerar inserts para a tabela estoque
115
- function generateEstoqueInserts ( numInserts ) {
120
+ function generateEstoqueInserts ( ) {
116
121
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
+ }
130
134
}
131
135
132
136
return inserts ;
133
137
}
134
138
135
139
// Gerar inserts para a tabela venda
136
- function generateVendaInserts ( numInserts ) {
140
+ function generateVendaInserts ( ) {
137
141
const inserts = [ ] ;
138
142
139
- for ( let i = 0 ; i < numInserts ; i ++ ) {
143
+ for ( let i = 0 ; i < vendas ; i ++ ) {
140
144
const loja_id = faker . number . int ( { min : 1 , max : 10 } ) ;
141
145
const cliente_id = faker . number . int ( { min : 1 , max : 100 } ) ;
142
146
const funcionario_id = faker . number . int ( { min : 1 , max : 50 } ) ;
@@ -154,51 +158,43 @@ function generateVendaInserts(numInserts) {
154
158
}
155
159
156
160
// Gerar inserts para a tabela item_venda
157
- function generateItemVendaInserts ( numInserts ) {
161
+ function generateItemVendaInserts ( ) {
158
162
const inserts = [ ] ;
159
163
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
+ } )
174
185
}
175
186
176
187
return inserts ;
177
188
}
178
189
179
- // Gerar 100 inserts para a tabela cliente
180
190
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 ( ) ;
186
192
const funcionarioInserts = generateFuncionarioInserts ( 50 ) ;
187
-
188
- // Gerar 4 inserts para a tabela marca
189
193
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 ( ) ;
202
198
203
199
// Imprimir os inserts gerados
204
200
console . log ( '' ) ;
0 commit comments