4
4
"context"
5
5
"encoding/json"
6
6
"fmt"
7
+ "slices"
7
8
"sort"
8
9
"strconv"
9
10
"strings"
@@ -14,7 +15,6 @@ import (
14
15
log "github.com/sirupsen/logrus"
15
16
16
17
"github.com/crowdsecurity/go-cs-lib/cstime"
17
- "github.com/crowdsecurity/go-cs-lib/slicetools"
18
18
19
19
"github.com/crowdsecurity/crowdsec/pkg/csnet"
20
20
"github.com/crowdsecurity/crowdsec/pkg/database/ent"
@@ -166,9 +166,7 @@ func (c *Client) CreateOrUpdateAlert(ctx context.Context, machineID string, aler
166
166
167
167
decisions := []* ent.Decision {}
168
168
169
- builderChunks := slicetools .Chunks (decisionBuilders , c .decisionBulkSize )
170
-
171
- for _ , builderChunk := range builderChunks {
169
+ for builderChunk := range slices .Chunk (decisionBuilders , c .decisionBulkSize ) {
172
170
decisionsCreateRet , err := c .Ent .Decision .CreateBulk (builderChunk ... ).Save (ctx )
173
171
if err != nil {
174
172
return "" , fmt .Errorf ("creating alert decisions: %w" , err )
@@ -179,9 +177,7 @@ func (c *Client) CreateOrUpdateAlert(ctx context.Context, machineID string, aler
179
177
180
178
// now that we bulk created missing decisions, let's update the alert
181
179
182
- decisionChunks := slicetools .Chunks (decisions , c .decisionBulkSize )
183
-
184
- for _ , decisionChunk := range decisionChunks {
180
+ for decisionChunk := range slices .Chunk (decisions , c .decisionBulkSize ) {
185
181
err = c .Ent .Alert .Update ().Where (alert .UUID (alertItem .UUID )).AddDecisions (decisionChunk ... ).Exec (ctx )
186
182
if err != nil {
187
183
return "" , fmt .Errorf ("updating alert %s: %w" , alertItem .UUID , err )
@@ -329,9 +325,7 @@ func (c *Client) UpdateCommunityBlocklist(ctx context.Context, alertItem *models
329
325
valueList = append (valueList , * decisionItem .Value )
330
326
}
331
327
332
- deleteChunks := slicetools .Chunks (valueList , c .decisionBulkSize )
333
-
334
- for _ , deleteChunk := range deleteChunks {
328
+ for deleteChunk := range slices .Chunk (valueList , c .decisionBulkSize ) {
335
329
// Deleting older decisions from capi
336
330
deletedDecisions , err := txClient .Decision .Delete ().
337
331
Where (decision .And (
@@ -346,9 +340,7 @@ func (c *Client) UpdateCommunityBlocklist(ctx context.Context, alertItem *models
346
340
deleted += deletedDecisions
347
341
}
348
342
349
- builderChunks := slicetools .Chunks (decisionBuilders , c .decisionBulkSize )
350
-
351
- for _ , builderChunk := range builderChunks {
343
+ for builderChunk := range slices .Chunk (decisionBuilders , c .decisionBulkSize ) {
352
344
insertedDecisions , err := txClient .Decision .CreateBulk (builderChunk ... ).Save (ctx )
353
345
if err != nil {
354
346
return 0 , 0 , 0 , rollbackOnError (txClient , err , "bulk creating decisions" )
@@ -545,8 +537,7 @@ func buildMetaCreates(ctx context.Context, logger log.FieldLogger, client *ent.C
545
537
func buildDecisions (ctx context.Context , logger log.FieldLogger , client * Client , alertItem * models.Alert , stopAtTime time.Time ) ([]* ent.Decision , int , error ) {
546
538
decisions := []* ent.Decision {}
547
539
548
- decisionChunks := slicetools .Chunks (alertItem .Decisions , client .decisionBulkSize )
549
- for _ , decisionChunk := range decisionChunks {
540
+ for decisionChunk := range slices .Chunk (alertItem .Decisions , client .decisionBulkSize ) {
550
541
decisionRet , err := client .createDecisionChunk (ctx , * alertItem .Simulated , stopAtTime , decisionChunk )
551
542
if err != nil {
552
543
return nil , 0 , fmt .Errorf ("creating alert decisions: %w" , err )
@@ -601,9 +592,8 @@ func saveAlerts(ctx context.Context, c *Client, alertBuilders []*ent.AlertCreate
601
592
ret [i ] = strconv .Itoa (a .ID )
602
593
603
594
d := alertDecisions [i ]
604
- decisionsChunk := slicetools .Chunks (d , c .decisionBulkSize )
605
595
606
- for _ , d2 := range decisionsChunk {
596
+ for d2 := range slices . Chunk ( d , c . decisionBulkSize ) {
607
597
if err := retryOnBusy (func () error {
608
598
_ , err := c .Ent .Alert .Update ().Where (alert .IDEQ (a .ID )).AddDecisions (d2 ... ).Save (ctx )
609
599
return err
@@ -720,10 +710,9 @@ func (c *Client) CreateAlert(ctx context.Context, machineID string, alertList []
720
710
721
711
c .Log .Debugf ("writing %d items" , len (alertList ))
722
712
723
- alertChunks := slicetools .Chunks (alertList , alertCreateBulkSize )
724
713
alertIDs := []string {}
725
714
726
- for _ , alertChunk := range alertChunks {
715
+ for alertChunk := range slices . Chunk ( alertList , alertCreateBulkSize ) {
727
716
ids , err := c .createAlertChunk (ctx , machineID , owner , alertChunk )
728
717
if err != nil {
729
718
return nil , fmt .Errorf ("machine '%s': %w" , machineID , err )
0 commit comments