11const { 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
46function 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
180190const 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 ( ) ;
186192const funcionarioInserts = generateFuncionarioInserts ( 50 ) ;
187-
188- // Gerar 4 inserts para a tabela marca
189193const 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
204200console . log ( '' ) ;
0 commit comments