@@ -11,6 +11,7 @@ import (
11
11
"github.com/cheggaaa/pb/v3"
12
12
"github.com/inconshreveable/log15"
13
13
sqlite3 "github.com/mattn/go-sqlite3"
14
+ "github.com/spf13/viper"
14
15
"github.com/vulsio/go-cpe-dictionary/config"
15
16
"github.com/vulsio/go-cpe-dictionary/models"
16
17
"golang.org/x/xerrors"
@@ -43,12 +44,17 @@ func (r *RDBDriver) Name() string {
43
44
func (r * RDBDriver ) OpenDB (dbType , dbPath string , debugSQL bool ) (locked bool , err error ) {
44
45
gormConfig := gorm.Config {
45
46
DisableForeignKeyConstraintWhenMigrating : true ,
46
- Logger : logger .Default .LogMode (logger .Silent ),
47
+ Logger : logger .New (
48
+ log .New (os .Stderr , "\r \n " , log .LstdFlags ),
49
+ logger.Config {
50
+ LogLevel : logger .Silent ,
51
+ },
52
+ ),
47
53
}
48
54
49
55
if debugSQL {
50
56
gormConfig .Logger = logger .New (
51
- log .New (os .Stdout , "\r \n " , log .LstdFlags ),
57
+ log .New (os .Stderr , "\r \n " , log .LstdFlags ),
52
58
logger.Config {
53
59
SlowThreshold : time .Second ,
54
60
LogLevel : logger .Info ,
@@ -171,7 +177,7 @@ func (r *RDBDriver) GetVendorProducts() (vendorProducts []string, err error) {
171
177
}
172
178
173
179
for _ , vp := range results {
174
- vendorProducts = append (vendorProducts , fmt .Sprintf ("%s:: %s" , vp .Vendor , vp .Product ))
180
+ vendorProducts = append (vendorProducts , fmt .Sprintf ("%s# %s" , vp .Vendor , vp .Product ))
175
181
}
176
182
return
177
183
}
@@ -209,6 +215,11 @@ func (r *RDBDriver) deleteAndInsertCpes(conn *gorm.DB, fetchType models.FetchTyp
209
215
tx .Commit ()
210
216
}()
211
217
218
+ batchSize := viper .GetInt ("batch-size" )
219
+ if batchSize < 1 {
220
+ return xerrors .New ("Failed to set batch-size. err: batch-size option is not set properly" )
221
+ }
222
+
212
223
// Delete all old records
213
224
oldIDs := []int64 {}
214
225
result := tx .Model (models.CategorizedCpe {}).Select ("id" ).Where ("fetch_type = ?" , fetchType ).Find (& oldIDs )
@@ -218,15 +229,15 @@ func (r *RDBDriver) deleteAndInsertCpes(conn *gorm.DB, fetchType models.FetchTyp
218
229
219
230
if result .RowsAffected > 0 {
220
231
log15 .Info (fmt .Sprintf ("Deleting records that match fetch_type = %s from your DB. This will take some time." , fetchType ))
221
- for idx := range chunkSlice (len (oldIDs ), 10000 ) {
232
+ for idx := range chunkSlice (len (oldIDs ), batchSize ) {
222
233
if err := tx .Where ("id IN ?" , oldIDs [idx .From :idx .To ]).Delete (& models.CategorizedCpe {}).Error ; err != nil {
223
234
return xerrors .Errorf ("Failed to delete: %w" , err )
224
235
}
225
236
}
226
237
}
227
238
228
239
bar := pb .StartNew (len (cpes ))
229
- for idx := range chunkSlice (len (cpes ), 2000 ) {
240
+ for idx := range chunkSlice (len (cpes ), batchSize ) {
230
241
if err := tx .Create (cpes [idx .From :idx .To ]).Error ; err != nil {
231
242
return xerrors .Errorf ("Failed to insert. err: %w" , err )
232
243
}
0 commit comments