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 ) ) ;
0 commit comments