@@ -17,22 +17,25 @@ package ravendb
1717
1818import (
1919 "context"
20+ "crypto/rand"
2021 "crypto/tls"
2122 "crypto/x509"
23+ "encoding/base64"
2224 "errors"
2325 "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+
2434 "github.com/dapr/components-contrib/metadata"
2535 "github.com/dapr/components-contrib/state"
2636 stateutils "github.com/dapr/components-contrib/state/utils"
2737 "github.com/dapr/kit/logger"
2838 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"
3639)
3740
3841const (
@@ -95,7 +98,7 @@ func (r *RavenDB) Init(ctx context.Context, metadata state.Metadata) (err error)
9598 if err != nil {
9699 return err
97100 }
98- //TODO: Operation timeout?
101+ // TODO: Operation timeout?
99102 store , err := r .getRavenDBStore (ctx )
100103 if err != nil {
101104 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
157160 }
158161
159162 var meta map [string ]string
160- var ttl , okTTL = ravenMeta .Get (expires )
163+ ttl , okTTL : = ravenMeta .Get (expires )
161164 if okTTL {
162165 meta = map [string ]string {
163166 state .GetRespMetaKeyTTLExpireTime : ttl .(string ),
164167 }
165168 }
166169
167170 var etagResp string
168- var eTag , okETag = ravenMeta .Get (changeVector )
171+ eTag , okETag : = ravenMeta .Get (changeVector )
169172 if okETag {
170173 etagResp = eTag .(string )
171174 } else {
@@ -256,17 +259,17 @@ func (r *RavenDB) BulkGet(ctx context.Context, req []state.GetRequest, _ state.B
256259 }
257260 defer session .Close ()
258261
259- var items = make (map [string ]* Item , len (keys ))
262+ items : = make (map [string ]* Item , len (keys ))
260263 err = session .LoadMulti (items , keys )
261264 if err != nil {
262265 return []state.BulkGetResponse {}, fmt .Errorf ("faield bulk get with error: %s" , err )
263266 }
264267
265- var resp = make ([]state.BulkGetResponse , 0 , len (items ))
268+ resp : = make ([]state.BulkGetResponse , 0 , len (items ))
266269
267270 for ID , current := range items {
268271 if current == nil {
269- var convert = state.BulkGetResponse {
272+ convert : = state.BulkGetResponse {
270273 Key : ID ,
271274 Data : nil ,
272275 ETag : nil ,
@@ -275,14 +278,14 @@ func (r *RavenDB) BulkGet(ctx context.Context, req []state.GetRequest, _ state.B
275278 resp = append (resp , convert )
276279 } else {
277280 ravenMeta , err := session .GetMetadataFor (current )
278- var etagResp = ""
281+ etagResp : = ""
279282 if err == nil {
280- var eTag , okETag = ravenMeta .Get (changeVector )
283+ eTag , okETag : = ravenMeta .Get (changeVector )
281284 if okETag {
282285 etagResp = eTag .(string )
283286 }
284287 }
285- var convert = state.BulkGetResponse {
288+ convert : = state.BulkGetResponse {
286289 Key : current .ID ,
287290 Data : []byte (current .Value ),
288291 ETag : & etagResp ,
@@ -328,9 +331,6 @@ func (r *RavenDB) setInternal(ctx context.Context, req *state.SetRequest, sessio
328331 // if we have item in DB we can try to override it with concurency check
329332 var newItem * Item
330333 err = session .Load (& newItem , req .Key )
331- if err != nil {
332- fmt .Println ("error loading item during set" , err )
333- }
334334 if newItem == nil {
335335 err = session .Store (item )
336336 } else {
@@ -375,7 +375,7 @@ func (r *RavenDB) setInternal(ctx context.Context, req *state.SetRequest, sessio
375375 if reqTTL != nil {
376376 metaData , err := session .Advanced ().GetMetadataFor (item )
377377 if err != nil {
378- return errors .New ("Failed to get metadata for item" )
378+ return errors .New ("failed to get metadata for item" )
379379 }
380380 expiry := time .Now ().Add (time .Second * time .Duration (* reqTTL )).UTC ()
381381 iso8601String := expiry .Format ("2006-01-02T15:04:05.9999999Z07:00" )
@@ -393,11 +393,10 @@ func (r *RavenDB) deleteInternal(ctx context.Context, req *state.DeleteRequest,
393393 err = session .Delete (itemToDelete )
394394 }
395395 } else {
396-
397396 if req .HasETag () {
398397 err = session .DeleteByID (req .Key , * req .ETag )
399398 } else {
400- //TODO: Fix after update to ravendb sdk
399+ // TODO: Fix after update to ravendb sdk
401400 err = session .DeleteByID (req .Key , "" )
402401 }
403402 }
@@ -452,10 +451,7 @@ func (r *RavenDB) initTTL(store *ravendb.DocumentStore) {
452451 if err != nil {
453452 return
454453 }
455- err = store .Maintenance ().Send (operation )
456- if err != nil {
457- fmt .Println (err )
458- }
454+ store .Maintenance ().Send (operation )
459455}
460456
461457func (r * RavenDB ) setupDatabase (store * ravendb.DocumentStore ) {
@@ -508,13 +504,17 @@ func isConcurrencyException(err error) bool {
508504 return strings .Contains (err .Error (), "Optimistic concurrency violation" )
509505}
510506
511- // helper method to generate random string
512- var letterRunes = []rune ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" )
513-
514507func 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 ""
518515 }
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 ]
520520}
0 commit comments