telemetrylib

package
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 29, 2025 License: Apache-2.0 Imports: 13 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DatabaseStore

type DatabaseStore struct {
	Conn       *sql.DB
	Driver     string
	DataSource string
	// contains filtered or unexported fields
}

DatabaseStorer is an implementation for storing data in a database.

func NewDatabaseStore

func NewDatabaseStore(dbConfig config.DBConfig) (ds *DatabaseStore, err error)

func (*DatabaseStore) Connect

func (d *DatabaseStore) Connect() (err error)

func (*DatabaseStore) EnsureTablesExist

func (d *DatabaseStore) EnsureTablesExist() (err error)

func (*DatabaseStore) GetBundleCount

func (d *DatabaseStore) GetBundleCount(reportIds ...any) (count int, err error)

func (*DatabaseStore) GetBundleRowsInAReport

func (d *DatabaseStore) GetBundleRowsInAReport(reportId string) (bundleRows []*TelemetryBundleRow, err error)

func (*DatabaseStore) GetBundles

func (d *DatabaseStore) GetBundles(reportIds ...any) (bundleRowIds []int64, bundleRows []*TelemetryBundleRow, err error)

func (*DatabaseStore) GetDataItemRowsInABundle

func (d *DatabaseStore) GetDataItemRowsInABundle(bundleId string) (itemRows []*TelemetryDataItemRow, err error)

func (*DatabaseStore) GetItemCount

func (d *DatabaseStore) GetItemCount(bundleIds ...any) (count int, err error)

func (*DatabaseStore) GetItems

func (d *DatabaseStore) GetItems(bundleIds ...any) (itemRowIds []int64, itemRows []*TelemetryDataItemRow, err error)

func (*DatabaseStore) GetReportCount

func (d *DatabaseStore) GetReportCount(ids ...any) (count int, err error)

func (*DatabaseStore) GetReports

func (d *DatabaseStore) GetReports(ids ...any) (reportRowIds []int64, reportRows []*TelemetryReportRow, err error)

func (DatabaseStore) Persistent added in v0.1.5

func (d DatabaseStore) Persistent() bool

func (*DatabaseStore) Setup

func (d *DatabaseStore) Setup(dbcfg config.DBConfig)

func (DatabaseStore) String

func (d DatabaseStore) String() string

type TelemetryBundle

type TelemetryBundle struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	Header             TelemetryBundleHeader `json:"header" validate:"required"`
	TelemetryDataItems []TelemetryDataItem   `json:"telemetryDataItems,omitempty" validate:"required,gt=0,dive"`
	Footer             TelemetryBundleFooter `json:"footer,omitempty" validate:"omitempty"`
}

func NewTelemetryBundle

func NewTelemetryBundle(clientId string, customerId string, tags types.Tags) (*TelemetryBundle, error)

func (*TelemetryBundle) UpdateChecksum

func (tb *TelemetryBundle) UpdateChecksum() (err error)

func (*TelemetryBundle) VerifyChecksum

func (tb *TelemetryBundle) VerifyChecksum() (err error)

type TelemetryBundleFooter

type TelemetryBundleFooter struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	Checksum string `json:"checksum,omitempty" validate:"omitempty,md5"`
}

type TelemetryBundleHeader

type TelemetryBundleHeader struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	BundleId          string   `json:"bundleId,omitempty" validate:"required,uuid|uuid_rfc4122"`
	BundleTimeStamp   string   `json:"bundleTimeStamp" validate:"required"`
	BundleClientId    string   `json:"bundleClientId" validate:"required,uuid|uuid_rfc4122"`
	BundleCustomerId  string   `json:"bundleCustomerId" validate:"omitempty"`
	BundleAnnotations []string `json:"bundleAnnotations,omitempty"`
}

type TelemetryBundleRow

type TelemetryBundleRow struct {
	Id                int64
	BundleId          string
	BundleTimestamp   string
	BundleClientId    string
	BundleCustomerId  string
	BundleAnnotations string
	ReportId          sql.NullInt64
}

func NewTelemetryBundleRow

func NewTelemetryBundleRow(clientId string, customerId string, tags types.Tags) (*TelemetryBundleRow, error)

func (*TelemetryBundleRow) Delete

func (b *TelemetryBundleRow) Delete(db *sql.DB) (err error)

func (*TelemetryBundleRow) Exists

func (b *TelemetryBundleRow) Exists(db *sql.DB) bool

func (*TelemetryBundleRow) Insert

func (b *TelemetryBundleRow) Insert(db *sql.DB, itemIDs []int64) (bundleId string, err error)

type TelemetryCommon

type TelemetryCommon interface {

	// Whether the datastore is persistent or not
	Persistent() bool

	// Get a count of telemetry data items that are not associated with a bundle
	ItemCount(bundleIds ...any) (int, error)

	// Get all telemetry data items from the items table
	GetItemRows(bundleIds ...any) ([]*TelemetryDataItemRow, error)

	// Delete a specified telemetry data item from the items table
	DeleteItem(dataItemRow *TelemetryDataItemRow) error

	// Get a count of telemetry bundles that are not associated with a report
	BundleCount(bundleIds ...any) (int, error)

	// Get telemetry bundles from the bundles table
	GetBundleRows(reportIds ...any) ([]*TelemetryBundleRow, error)

	// Delete a specified telemetry bundle from the bundles table
	DeleteBundle(bundleRow *TelemetryBundleRow) error

	// Get a count of telemetry reports
	ReportCount(ids ...any) (int, error)

	// Get telemetry reports from the reports table
	GetReportRows(ids ...any) ([]*TelemetryReportRow, error)

	// Delete a specified telemetry report from the reports table
	DeleteReport(reportRow *TelemetryReportRow) error
	// contains filtered or unexported methods
}

type TelemetryCommonImpl

type TelemetryCommonImpl struct {
	// contains filtered or unexported fields
}

func (*TelemetryCommonImpl) BundleCount

func (t *TelemetryCommonImpl) BundleCount(reportIds ...any) (count int, err error)

func (*TelemetryCommonImpl) DeleteBundle

func (t *TelemetryCommonImpl) DeleteBundle(bundleRow *TelemetryBundleRow) (err error)

func (*TelemetryCommonImpl) DeleteItem

func (t *TelemetryCommonImpl) DeleteItem(itemRow *TelemetryDataItemRow) (err error)

func (*TelemetryCommonImpl) DeleteReport

func (t *TelemetryCommonImpl) DeleteReport(reportRow *TelemetryReportRow) (err error)

func (*TelemetryCommonImpl) GetBundleRows

func (t *TelemetryCommonImpl) GetBundleRows(reportIds ...any) (bundleRows []*TelemetryBundleRow, err error)

func (*TelemetryCommonImpl) GetItemRows

func (t *TelemetryCommonImpl) GetItemRows(bundleIds ...any) (itemRows []*TelemetryDataItemRow, err error)

func (*TelemetryCommonImpl) GetReportRows

func (t *TelemetryCommonImpl) GetReportRows(ids ...any) (reportRows []*TelemetryReportRow, err error)

func (*TelemetryCommonImpl) ItemCount

func (t *TelemetryCommonImpl) ItemCount(bundleIds ...any) (count int, err error)

func (*TelemetryCommonImpl) Persistent added in v0.1.5

func (t *TelemetryCommonImpl) Persistent() bool

func (*TelemetryCommonImpl) ReportCount

func (t *TelemetryCommonImpl) ReportCount(ids ...any) (count int, err error)

type TelemetryDataItem

type TelemetryDataItem struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	Header        TelemetryDataItemHeader `json:"header"  validate:"required"`
	TelemetryData json.RawMessage         `json:"telemetryData"  validate:"required,dive"`
	Footer        TelemetryDataItemFooter `json:"footer,omitempty" validate:"omitempty"`
}

func NewTelemetryDataItem

func NewTelemetryDataItem(telemetry types.TelemetryType, tags types.Tags, content *types.TelemetryBlob) (*TelemetryDataItem, error)

func (*TelemetryDataItem) UpdateChecksum

func (tdi *TelemetryDataItem) UpdateChecksum() (err error)

func (*TelemetryDataItem) VerifyChecksum

func (tdi *TelemetryDataItem) VerifyChecksum() (err error)

type TelemetryDataItemFooter

type TelemetryDataItemFooter struct {
	Checksum string `json:"checksum"  validate:"required"`
}

type TelemetryDataItemHeader

type TelemetryDataItemHeader struct {
	TelemetryId          string   `json:"telemetryId"  validate:"required,uuid|uuid_rfc4122"`
	TelemetryTimeStamp   string   `json:"telemetryTimeStamp"  validate:"required"`
	TelemetryType        string   `json:"telemetryType"  validate:"required,min=5"`
	TelemetryAnnotations []string `json:"telemetryAnnotations,omitempty"`
}

type TelemetryDataItemRow

type TelemetryDataItemRow struct {
	Id              int64
	ItemId          string
	ItemType        string
	ItemTimestamp   string
	ItemAnnotations string
	ItemData        []byte
	ItemChecksum    string
	Compression     sql.NullString
	BundleId        sql.NullInt64
}

func NewTelemetryDataItemRow

func NewTelemetryDataItemRow(telemetry types.TelemetryType, tags types.Tags, content *types.TelemetryBlob) (itemRow *TelemetryDataItemRow, err error)

func (*TelemetryDataItemRow) Delete

func (t *TelemetryDataItemRow) Delete(db *sql.DB) (err error)

func (*TelemetryDataItemRow) Exists

func (t *TelemetryDataItemRow) Exists(db *sql.DB) bool

func (*TelemetryDataItemRow) Insert

func (t *TelemetryDataItemRow) Insert(db *sql.DB) (err error)

type TelemetryProcessor

type TelemetryProcessor interface {
	TelemetryCommon

	// Add telemetry data - a method to process jsonData as a byte[]
	AddData(
		telemetry types.TelemetryType,
		content *types.TelemetryBlob,
		tags types.Tags,
	) (err error)

	// Generate telemetry bundle
	GenerateBundle(
		clientId string,
		customerId string,
		tags types.Tags,
	) (bundleRow *TelemetryBundleRow, err error)

	// Generate telemetry report
	GenerateReport(
		clientId string,
		tags types.Tags,
	) (reportRow *TelemetryReportRow, err error)

	// Convert TelemetryReportRow structure to TelemetryReport
	ToReport(reportRow *TelemetryReportRow) (report *TelemetryReport, err error)

	// Convert TelemetryBundleRow structure to TelemetryBundle
	ToBundle(bundleRow *TelemetryBundleRow) (bundle *TelemetryBundle, err error)

	// Convert TelemetryDataItemRow structure to TelemetryDataItem
	ToItem(itemRow *TelemetryDataItemRow) (item *TelemetryDataItem, err error)
}

func NewTelemetryProcessor

func NewTelemetryProcessor(cfg *config.DBConfig) (TelemetryProcessor, error)

type TelemetryProcessorImpl

type TelemetryProcessorImpl struct {
	// contains filtered or unexported fields
}

implements TelemetryProcessor interface.

func (*TelemetryProcessorImpl) AddData

func (p *TelemetryProcessorImpl) AddData(telemetry types.TelemetryType, marshaledData *types.TelemetryBlob, tags types.Tags) (err error)

func (*TelemetryProcessorImpl) BundleCount

func (p *TelemetryProcessorImpl) BundleCount(reportIds ...any) (count int, err error)

func (*TelemetryProcessorImpl) DeleteBundle

func (p *TelemetryProcessorImpl) DeleteBundle(bundleRow *TelemetryBundleRow) (err error)

func (*TelemetryProcessorImpl) DeleteItem

func (p *TelemetryProcessorImpl) DeleteItem(dataItemRow *TelemetryDataItemRow) (err error)

func (*TelemetryProcessorImpl) DeleteReport

func (p *TelemetryProcessorImpl) DeleteReport(reportRow *TelemetryReportRow) (err error)

func (*TelemetryProcessorImpl) GenerateBundle

func (p *TelemetryProcessorImpl) GenerateBundle(clientId string, customerId string, tags types.Tags) (bundleRow *TelemetryBundleRow, err error)

func (*TelemetryProcessorImpl) GenerateReport

func (p *TelemetryProcessorImpl) GenerateReport(clientId string, tags types.Tags) (reportRow *TelemetryReportRow, err error)

func (*TelemetryProcessorImpl) GetBundleRows

func (p *TelemetryProcessorImpl) GetBundleRows(reportIds ...any) (bundleRows []*TelemetryBundleRow, err error)

func (*TelemetryProcessorImpl) GetItemRows

func (p *TelemetryProcessorImpl) GetItemRows(bundleIds ...any) (dataitemsRows []*TelemetryDataItemRow, err error)

func (*TelemetryProcessorImpl) GetReportRows

func (p *TelemetryProcessorImpl) GetReportRows(ids ...any) (reportRows []*TelemetryReportRow, err error)

func (*TelemetryProcessorImpl) ItemCount

func (p *TelemetryProcessorImpl) ItemCount(bundleIds ...any) (count int, err error)

func (*TelemetryProcessorImpl) Persistent added in v0.1.5

func (p *TelemetryProcessorImpl) Persistent() bool

func (*TelemetryProcessorImpl) ReportCount

func (p *TelemetryProcessorImpl) ReportCount(ids ...any) (count int, err error)

func (*TelemetryProcessorImpl) ToBundle

func (p *TelemetryProcessorImpl) ToBundle(bundleRow *TelemetryBundleRow) (bundle *TelemetryBundle, err error)

func (*TelemetryProcessorImpl) ToItem

func (p *TelemetryProcessorImpl) ToItem(itemRow *TelemetryDataItemRow) (item *TelemetryDataItem, err error)

func (*TelemetryProcessorImpl) ToReport

func (p *TelemetryProcessorImpl) ToReport(reportRow *TelemetryReportRow) (report *TelemetryReport, err error)

type TelemetryReport

type TelemetryReport struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	Header           TelemetryReportHeader `json:"header" validate:"required"`
	TelemetryBundles []TelemetryBundle     `json:"telemetryBundles,omitempty" validate:"required,gt=0,dive"`
	Footer           TelemetryReportFooter `json:"footer,omitempty" validate:"omitempty"`
}

func NewTelemetryReport

func NewTelemetryReport(clientId string, tags types.Tags) (*TelemetryReport, error)

func (*TelemetryReport) UpdateChecksum

func (tr *TelemetryReport) UpdateChecksum() (err error)

func (*TelemetryReport) Validate

func (tr *TelemetryReport) Validate() (err error)

func (*TelemetryReport) VerifyChecksum

func (tr *TelemetryReport) VerifyChecksum() (err error)

type TelemetryReportFooter

type TelemetryReportFooter struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	Checksum string `json:"checksum,omitempty" validate:"omitempty,md5"`
}

type TelemetryReportHeader

type TelemetryReportHeader struct {
	// NOTE: omitempty option used in json tags to support generating test scenarios
	ReportId          string   `json:"reportId,omitempty" validate:"required,uuid|uuid_rfc4122"`
	ReportTimeStamp   string   `json:"reportTimeStamp" validate:"required"`
	ReportClientId    string   `json:"reportClientId" validate:"required,uuid|uuid_rfc4122"`
	ReportAnnotations []string `json:"reportAnnotations,omitempty"`
}

type TelemetryReportRow

type TelemetryReportRow struct {
	Id                int64
	ReportId          string
	ReportTimestamp   string
	ReportClientId    string
	ReportAnnotations string
}

func NewTelemetryReportRow

func NewTelemetryReportRow(clientId string, tags types.Tags) (*TelemetryReportRow, error)

func (*TelemetryReportRow) Delete

func (r *TelemetryReportRow) Delete(db *sql.DB) (err error)

func (*TelemetryReportRow) Exists

func (r *TelemetryReportRow) Exists(db *sql.DB) bool

func (*TelemetryReportRow) Insert

func (r *TelemetryReportRow) Insert(db *sql.DB, bundleIDs []int64) (reportId string, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL