go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/internal/datalakes/inmemory/assets.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package inmemory 5 6 import ( 7 "context" 8 "errors" 9 10 "github.com/rs/zerolog/log" 11 "go.mondoo.com/cnquery/explorer" 12 ) 13 14 type wrapAsset struct { 15 mrn string 16 ResolvedPack *explorer.ResolvedPack 17 ResolvedVersion explorer.ResolvedVersion 18 Bundle *explorer.Bundle 19 } 20 21 // EnsureAsset makes sure an asset exists 22 func (db *Db) EnsureAsset(ctx context.Context, mrn string) error { 23 _, _, err := db.ensureAssetObject(ctx, mrn) 24 return err 25 } 26 27 func (db *Db) ensureAssetObject(ctx context.Context, mrn string) (wrapAsset, bool, error) { 28 log.Debug().Str("mrn", mrn).Msg("assets> ensure asset") 29 30 x, ok := db.cache.Get(dbIDAsset + mrn) 31 if ok { 32 return x.(wrapAsset), false, nil 33 } 34 35 assetw := wrapAsset{ 36 mrn: mrn, 37 Bundle: &explorer.Bundle{ 38 OwnerMrn: mrn, 39 }, 40 } 41 ok = db.cache.Set(dbIDAsset+mrn, assetw, 1) 42 if !ok { 43 return wrapAsset{}, false, errors.New("failed to create asset '" + mrn + "'") 44 } 45 46 return assetw, true, nil 47 }