Documentation
¶
Overview ¶
-------------------------------------------------------------- SPDX-FileCopyrightText: Copyright © 2024 The Protobom Authors SPDX-FileType: SOURCE SPDX-License-Identifier: Apache-2.0 --------------------------------------------------------------
-------------------------------------------------------------- SPDX-FileCopyrightText: Copyright © 2024 The Protobom Authors SPDX-FileType: SOURCE SPDX-License-Identifier: Apache-2.0 --------------------------------------------------------------
-------------------------------------------------------------- SPDX-FileCopyrightText: Copyright © 2024 The Protobom Authors SPDX-FileType: SOURCE SPDX-License-Identifier: Apache-2.0 --------------------------------------------------------------
-------------------------------------------------------------- SPDX-FileCopyrightText: Copyright © 2024 The Protobom Authors SPDX-FileType: SOURCE SPDX-License-Identifier: Apache-2.0 --------------------------------------------------------------
-------------------------------------------------------------- SPDX-FileCopyrightText: Copyright © 2024 The Protobom Authors SPDX-FileType: SOURCE SPDX-License-Identifier: Apache-2.0 --------------------------------------------------------------
Example ¶
package main import ( "encoding/json" "fmt" "os" "path/filepath" "github.com/protobom/protobom/pkg/reader" "github.com/protobom/storage/backends/ent" ) func main() { cwd, err := os.Getwd() if err != nil { panic(err) } dbFile := filepath.Join(cwd, "example.db") // Remove example.db if it already exists. if _, err := os.Stat(dbFile); err == nil { os.Remove(dbFile) } rdr := reader.New() backend := ent.NewBackend().WithDatabaseFile(dbFile) if err := backend.InitClient(); err != nil { panic(err) } defer backend.CloseClient() sbom, err := rdr.ParseFile(filepath.Join(cwd, "testdata", "sbom.cdx.json")) if err != nil { panic(err) } if err := backend.Store(sbom, nil); err != nil { panic(err) } retrieved, err := backend.Retrieve(sbom.Metadata.Id, nil) if err != nil { panic(err) } output, err := json.MarshalIndent(retrieved, "", " ") if err != nil { panic(err) } fmt.Println(string(output)) }
Output: { "metadata": { "id": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79", "version": "1", "date": {} }, "node_list": { "nodes": [ { "id": "pkg:npm/acme/component@1.0.0", "name": "tomcat-catalina", "version": "9.0.14", "licenses": [ "Apache-2.0" ], "license_concluded": "Apache-2.0", "identifiers": { "1": "pkg:npm/acme/component@1.0.0" }, "hashes": { "1": "3942447fac867ae5cdb3229b658f4d48", "2": "e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a", "3": "f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b", "5": "e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282" }, "primary_purpose": [ 16 ] }, { "id": "protobom-auto--000000001", "name": "Acme Application", "version": "9.1.1", "primary_purpose": [ 1 ] }, { "id": "protobom-auto--000000003", "name": "mylibrary", "version": "1.0.0", "primary_purpose": [ 16 ] } ], "edges": [ { "type": 5, "from": "protobom-auto--000000001", "to": [ "pkg:npm/acme/component@1.0.0", "protobom-auto--000000003" ] } ], "root_elements": [ "protobom-auto--000000001" ] } }
Index ¶
- type Annotation
- type Annotations
- type Backend
- func (backend *Backend) AddAnnotationToDocuments(name, value string, documentIDs ...string) error
- func (backend *Backend) AddAnnotations(documentID, name string, values ...string) error
- func (backend *Backend) ClearAnnotations(documentIDs ...string) error
- func (backend *Backend) CloseClient()
- func (backend *Backend) Debug() *Backend
- func (backend *Backend) GetDocumentAnnotations(documentID string, names ...string) (ent.Annotations, error)
- func (backend *Backend) GetDocumentUniqueAnnotation(documentID, name string) (string, error)
- func (backend *Backend) GetDocumentsByAnnotation(name string, values ...string) ([]*sbom.Document, error)
- func (backend *Backend) GetDocumentsByID(ids ...string) ([]*sbom.Document, error)
- func (backend *Backend) GetExternalReferencesByDocumentID(id string, types ...string) ([]*sbom.ExternalReference, error)
- func (backend *Backend) InitClient() error
- func (backend *Backend) RemoveAnnotations(documentID, name string, values ...string) error
- func (backend *Backend) Retrieve(id string, _ *storage.RetrieveOptions) (doc *sbom.Document, err error)
- func (backend *Backend) SetAnnotations(documentID, name string, values ...string) error
- func (backend *Backend) SetUniqueAnnotation(documentID, name, value string) error
- func (backend *Backend) Store(doc *sbom.Document, opts *storage.StoreOptions) error
- func (backend *Backend) WithAnnotation(name, value string, unique bool) *Backend
- func (backend *Backend) WithAnnotations(annotations Annotations) *Backend
- func (backend *Backend) WithBackendOptions(opts *BackendOptions) *Backend
- func (backend *Backend) WithDatabaseFile(file string) *Backend
- type BackendOptions
- type Option
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Annotation ¶ added in v0.1.5
type Annotation = ent.Annotation
Annotation is the model entity for the Annotation schema.
type Annotations ¶ added in v0.1.5
type Annotations = ent.Annotations
Annotations is a parsable slice of Annotation.
type Backend ¶
type Backend struct { // Options is the set of options common to all ent Backends. Options *BackendOptions // contains filtered or unexported fields }
Backend implements the protobom.pkg.storage.Backend interface.
func NewBackend ¶
func (*Backend) AddAnnotationToDocuments ¶ added in v0.1.4
AddAnnotationToDocuments applies a single named annotation value to multiple documents.
func (*Backend) AddAnnotations ¶ added in v0.1.4
AddAnnotations applies multiple named annotation values to a single document.
func (*Backend) ClearAnnotations ¶ added in v0.1.4
ClearAnnotations removes all annotations from the specified documents.
func (*Backend) CloseClient ¶
func (backend *Backend) CloseClient()
func (*Backend) GetDocumentAnnotations ¶ added in v0.1.4
func (backend *Backend) GetDocumentAnnotations(documentID string, names ...string) (ent.Annotations, error)
GetDocumentAnnotations gets all annotations for the specified document, limited to a set of annotation names if specified.
func (*Backend) GetDocumentUniqueAnnotation ¶ added in v0.1.5
GetDocumentUniqueAnnotation gets the value for a unique annotation.
func (*Backend) GetDocumentsByAnnotation ¶ added in v0.1.4
func (backend *Backend) GetDocumentsByAnnotation(name string, values ...string) ([]*sbom.Document, error)
GetDocumentsByAnnotation gets all documents having the specified named annotation, limited to a set of annotation values if specified.
func (*Backend) GetDocumentsByID ¶ added in v0.1.1
func (*Backend) GetExternalReferencesByDocumentID ¶ added in v0.1.1
func (*Backend) InitClient ¶
func (*Backend) RemoveAnnotations ¶ added in v0.1.4
RemoveAnnotations removes all annotations with the specified name from the document, limited to a set of annotation values if specified.
func (*Backend) Retrieve ¶
func (backend *Backend) Retrieve(id string, _ *storage.RetrieveOptions) (doc *sbom.Document, err error)
Retrieve implements the storage.Retriever interface.
func (*Backend) SetAnnotations ¶ added in v0.1.4
SetAnnotations explicitly sets the named annotations for the specified document.
func (*Backend) SetUniqueAnnotation ¶ added in v0.1.5
SetUniqueAnnotation sets a named annotation value that is unique to the specified document.
func (*Backend) WithAnnotation ¶ added in v0.1.5
func (*Backend) WithAnnotations ¶ added in v0.1.5
func (backend *Backend) WithAnnotations(annotations Annotations) *Backend
func (*Backend) WithBackendOptions ¶
func (backend *Backend) WithBackendOptions(opts *BackendOptions) *Backend
func (*Backend) WithDatabaseFile ¶
type BackendOptions ¶
type BackendOptions struct { // DatabaseFile is the file path of the SQLite database to be created. DatabaseFile string // Annotations is a slice of annotations to apply to stored document. Annotations // Debug configures the ent client to output all SQL statements during execution. Debug bool }
BackendOptions contains options specific to the protobom ent backend.
func NewBackendOptions ¶
func NewBackendOptions() *BackendOptions
NewBackendOptions creates a new BackendOptions for the backend.
type Option ¶
type Option func(*Backend)
Option represents a single configuration option for the ent backend.
func WithBackendOptions ¶
func WithBackendOptions(opts *BackendOptions) Option