go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/explorer/datalake.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package explorer
     5  
     6  import (
     7  	"context"
     8  
     9  	llx "go.mondoo.com/cnquery/llx"
    10  	"go.mondoo.com/cnquery/types"
    11  )
    12  
    13  // DataLake provides a shared database access layer
    14  type DataLake interface {
    15  	// GetQuery retrieves a given query
    16  	GetQuery(ctx context.Context, mrn string) (*Mquery, error)
    17  	// SetQuery stores a given query
    18  	// Note: the query must be defined, it cannot be nil
    19  	SetQuery(ctx context.Context, mrn string, query *Mquery) error
    20  
    21  	// SetQueryPack stores a given pack in the data lake
    22  	SetQueryPack(ctx context.Context, querypack *QueryPack, filters []*Mquery) error
    23  	// GetQueryPack retrieves and if necessary updates the pack
    24  	GetQueryPack(ctx context.Context, mrn string) (*QueryPack, error)
    25  	// GetBundle retrieves and if necessary updates the pack. Used for assets,
    26  	// which have multiple query packs associated with them.
    27  	GetBundle(ctx context.Context, mrn string) (*Bundle, error)
    28  	// DeleteQueryPack removes a given pack
    29  	// Note: the MRN has to be valid
    30  	DeleteQueryPack(ctx context.Context, mrn string) error
    31  	// List all packs for a given owner
    32  	// Note: Owner MRN is required
    33  	ListQueryPacks(ctx context.Context, ownerMrn string, name string) ([]*QueryPack, error)
    34  	// GetQueryPackFilters retrieves the list of asset filters for a pack (fast)
    35  	GetQueryPackFilters(ctx context.Context, mrn string) ([]*Mquery, error)
    36  
    37  	// MutateBundle runs the given mutation on a bundle, typically an asset.
    38  	// If it cannot find the owner, it will create it.
    39  	MutateBundle(ctx context.Context, mutation *BundleMutationDelta, createIfMissing bool) (*Bundle, error)
    40  	// SetProps will override properties for a given entity (asset, space, org)
    41  	SetProps(ctx context.Context, req *PropsReq) error
    42  
    43  	// EnsureAsset makes sure an asset with mrn exists
    44  	EnsureAsset(ctx context.Context, mrn string) error
    45  
    46  	// SetResolvedPack stores a resolved pack
    47  	SetResolvedPack(mrn string, filtersChecksum string, resolved *ResolvedPack) error
    48  	// SetAssetResolvedPack stores the resolved pack for a given asset
    49  	SetAssetResolvedPack(ctx context.Context, assetMrn string, resolved *ResolvedPack, version ResolvedVersion) error
    50  	// UpdateData sets the list of data value for a given asset and returns a list of updated IDs
    51  	UpdateData(ctx context.Context, assetMrn string, data map[string]*llx.Result) (map[string]types.Type, error)
    52  	// GetReport retrieves all scores and data for a given asset
    53  	GetReport(ctx context.Context, assetMrn string, packMrn string) (*Report, error)
    54  }