@@ -17,22 +17,25 @@ package ravendb
17
17
18
18
import (
19
19
"context"
20
+ "crypto/rand"
20
21
"crypto/tls"
21
22
"crypto/x509"
23
+ "encoding/base64"
22
24
"errors"
23
25
"fmt"
26
+ "net/http"
27
+ "reflect"
28
+ "strings"
29
+ "time"
30
+
31
+ jsoniterator "github.com/json-iterator/go"
32
+ ravendb "github.com/ravendb/ravendb-go-client"
33
+
24
34
"github.com/dapr/components-contrib/metadata"
25
35
"github.com/dapr/components-contrib/state"
26
36
stateutils "github.com/dapr/components-contrib/state/utils"
27
37
"github.com/dapr/kit/logger"
28
38
kitmd "github.com/dapr/kit/metadata"
29
- jsoniterator "github.com/json-iterator/go"
30
- ravendb "github.com/ravendb/ravendb-go-client"
31
- "math/rand"
32
- "net/http"
33
- "reflect"
34
- "strings"
35
- "time"
36
39
)
37
40
38
41
const (
@@ -95,7 +98,7 @@ func (r *RavenDB) Init(ctx context.Context, metadata state.Metadata) (err error)
95
98
if err != nil {
96
99
return err
97
100
}
98
- //TODO: Operation timeout?
101
+ // TODO: Operation timeout?
99
102
store , err := r .getRavenDBStore (ctx )
100
103
if err != nil {
101
104
return errors .New ("error in creating Raven DB Store" )
@@ -157,15 +160,15 @@ func (r *RavenDB) Get(ctx context.Context, req *state.GetRequest) (*state.GetRes
157
160
}
158
161
159
162
var meta map [string ]string
160
- var ttl , okTTL = ravenMeta .Get (expires )
163
+ ttl , okTTL : = ravenMeta .Get (expires )
161
164
if okTTL {
162
165
meta = map [string ]string {
163
166
state .GetRespMetaKeyTTLExpireTime : ttl .(string ),
164
167
}
165
168
}
166
169
167
170
var etagResp string
168
- var eTag , okETag = ravenMeta .Get (changeVector )
171
+ eTag , okETag : = ravenMeta .Get (changeVector )
169
172
if okETag {
170
173
etagResp = eTag .(string )
171
174
} else {
@@ -256,17 +259,17 @@ func (r *RavenDB) BulkGet(ctx context.Context, req []state.GetRequest, _ state.B
256
259
}
257
260
defer session .Close ()
258
261
259
- var items = make (map [string ]* Item , len (keys ))
262
+ items : = make (map [string ]* Item , len (keys ))
260
263
err = session .LoadMulti (items , keys )
261
264
if err != nil {
262
265
return []state.BulkGetResponse {}, fmt .Errorf ("faield bulk get with error: %s" , err )
263
266
}
264
267
265
- var resp = make ([]state.BulkGetResponse , 0 , len (items ))
268
+ resp : = make ([]state.BulkGetResponse , 0 , len (items ))
266
269
267
270
for ID , current := range items {
268
271
if current == nil {
269
- var convert = state.BulkGetResponse {
272
+ convert : = state.BulkGetResponse {
270
273
Key : ID ,
271
274
Data : nil ,
272
275
ETag : nil ,
@@ -275,14 +278,14 @@ func (r *RavenDB) BulkGet(ctx context.Context, req []state.GetRequest, _ state.B
275
278
resp = append (resp , convert )
276
279
} else {
277
280
ravenMeta , err := session .GetMetadataFor (current )
278
- var etagResp = ""
281
+ etagResp : = ""
279
282
if err == nil {
280
- var eTag , okETag = ravenMeta .Get (changeVector )
283
+ eTag , okETag : = ravenMeta .Get (changeVector )
281
284
if okETag {
282
285
etagResp = eTag .(string )
283
286
}
284
287
}
285
- var convert = state.BulkGetResponse {
288
+ convert : = state.BulkGetResponse {
286
289
Key : current .ID ,
287
290
Data : []byte (current .Value ),
288
291
ETag : & etagResp ,
@@ -328,9 +331,6 @@ func (r *RavenDB) setInternal(ctx context.Context, req *state.SetRequest, sessio
328
331
// if we have item in DB we can try to override it with concurency check
329
332
var newItem * Item
330
333
err = session .Load (& newItem , req .Key )
331
- if err != nil {
332
- fmt .Println ("error loading item during set" , err )
333
- }
334
334
if newItem == nil {
335
335
err = session .Store (item )
336
336
} else {
@@ -375,7 +375,7 @@ func (r *RavenDB) setInternal(ctx context.Context, req *state.SetRequest, sessio
375
375
if reqTTL != nil {
376
376
metaData , err := session .Advanced ().GetMetadataFor (item )
377
377
if err != nil {
378
- return errors .New ("Failed to get metadata for item" )
378
+ return errors .New ("failed to get metadata for item" )
379
379
}
380
380
expiry := time .Now ().Add (time .Second * time .Duration (* reqTTL )).UTC ()
381
381
iso8601String := expiry .Format ("2006-01-02T15:04:05.9999999Z07:00" )
@@ -393,11 +393,10 @@ func (r *RavenDB) deleteInternal(ctx context.Context, req *state.DeleteRequest,
393
393
err = session .Delete (itemToDelete )
394
394
}
395
395
} else {
396
-
397
396
if req .HasETag () {
398
397
err = session .DeleteByID (req .Key , * req .ETag )
399
398
} else {
400
- //TODO: Fix after update to ravendb sdk
399
+ // TODO: Fix after update to ravendb sdk
401
400
err = session .DeleteByID (req .Key , "" )
402
401
}
403
402
}
@@ -452,10 +451,7 @@ func (r *RavenDB) initTTL(store *ravendb.DocumentStore) {
452
451
if err != nil {
453
452
return
454
453
}
455
- err = store .Maintenance ().Send (operation )
456
- if err != nil {
457
- fmt .Println (err )
458
- }
454
+ store .Maintenance ().Send (operation )
459
455
}
460
456
461
457
func (r * RavenDB ) setupDatabase (store * ravendb.DocumentStore ) {
@@ -508,13 +504,17 @@ func isConcurrencyException(err error) bool {
508
504
return strings .Contains (err .Error (), "Optimistic concurrency violation" )
509
505
}
510
506
511
- // helper method to generate random string
512
- var letterRunes = []rune ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" )
513
-
514
507
func RandStringRunes (n int ) string {
515
- b := make ([]rune , n )
516
- for i := range b {
517
- b [i ] = letterRunes [rand .Intn (len (letterRunes ))]
508
+ // Create a byte slice to hold the random bytes
509
+ bytes := make ([]byte , n )
510
+
511
+ // Fill the byte slice with random bytes
512
+ _ , err := rand .Read (bytes )
513
+ if err != nil {
514
+ return ""
518
515
}
519
- return string (b )
516
+
517
+ // Encode the random bytes to a base64 string
518
+ // This will make it printable/usable as a string
519
+ return base64 .URLEncoding .EncodeToString (bytes )[:n ]
520
520
}
0 commit comments