database

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: May 3, 2026 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const SchemaVersion = 1

Variables

This section is empty.

Functions

func Exists

func Exists(path string) bool

Types

type Artifact

type Artifact struct {
	ID             int64          `db:"id" json:"id"`
	VersionPURL    string         `db:"version_purl" json:"version_purl"`
	Filename       string         `db:"filename" json:"filename"`
	UpstreamURL    string         `db:"upstream_url" json:"upstream_url"`
	StoragePath    sql.NullString `db:"storage_path" json:"storage_path,omitempty"`
	ContentHash    sql.NullString `db:"content_hash" json:"content_hash,omitempty"`
	Size           sql.NullInt64  `db:"size" json:"size,omitempty"`
	ContentType    sql.NullString `db:"content_type" json:"content_type,omitempty"`
	FetchedAt      sql.NullTime   `db:"fetched_at" json:"fetched_at,omitempty"`
	HitCount       int64          `db:"hit_count" json:"hit_count"`
	LastAccessedAt sql.NullTime   `db:"last_accessed_at" json:"last_accessed_at,omitempty"`
	CreatedAt      time.Time      `db:"created_at" json:"created_at"`
	UpdatedAt      time.Time      `db:"updated_at" json:"updated_at"`
}

Artifact represents a cached artifact in the database. This table is proxy-specific and not part of git-pkgs.

func (*Artifact) IsCached

func (a *Artifact) IsCached() bool

IsCached returns true if the artifact has been fetched and stored locally.

type CacheStats

type CacheStats struct {
	TotalPackages   int64
	TotalVersions   int64
	TotalArtifacts  int64
	TotalSize       int64
	TotalHits       int64
	EcosystemCounts map[string]int64
}

type DB

type DB struct {
	*sqlx.DB
	// contains filtered or unexported fields
}

func Create

func Create(path string) (*DB, error)

func Open

func Open(path string) (*DB, error)

func OpenOrCreate

func OpenOrCreate(path string) (*DB, error)

func OpenPostgres

func OpenPostgres(url string) (*DB, error)

func OpenPostgresOrCreate

func OpenPostgresOrCreate(url string) (*DB, error)

func (*DB) ClearArtifactCache

func (db *DB) ClearArtifactCache(versionPURL, filename string) error

func (*DB) CountCachedPackages

func (db *DB) CountCachedPackages(ecosystem string) (int64, error)

func (*DB) CountSearchResults

func (db *DB) CountSearchResults(query string, ecosystem string) (int64, error)

func (*DB) CreateSchema

func (db *DB) CreateSchema() error

func (*DB) DeleteVulnerabilitiesForPackage

func (db *DB) DeleteVulnerabilitiesForPackage(ecosystem, name string) error

func (*DB) Dialect

func (db *DB) Dialect() Dialect

func (*DB) EnsureArtifactsTable

func (db *DB) EnsureArtifactsTable() error

EnsureArtifactsTable adds the artifacts table to an existing database (e.g., a git-pkgs database) if it doesn't already exist.

func (*DB) EnsureMetadataCacheTable

func (db *DB) EnsureMetadataCacheTable() error

EnsureMetadataCacheTable creates the metadata_cache table if it doesn't exist.

func (*DB) GetArtifact

func (db *DB) GetArtifact(versionPURL, filename string) (*Artifact, error)

func (*DB) GetArtifactByPath

func (db *DB) GetArtifactByPath(storagePath string) (*Artifact, error)

func (*DB) GetArtifactsByVersionPURL

func (db *DB) GetArtifactsByVersionPURL(versionPURL string) ([]Artifact, error)

func (*DB) GetCacheStats

func (db *DB) GetCacheStats() (*CacheStats, error)

func (*DB) GetCachedArtifactCount

func (db *DB) GetCachedArtifactCount() (int64, error)

func (*DB) GetEnrichmentStats

func (db *DB) GetEnrichmentStats() (*EnrichmentStats, error)

func (*DB) GetLeastRecentlyUsedArtifacts

func (db *DB) GetLeastRecentlyUsedArtifacts(limit int) ([]Artifact, error)

func (*DB) GetMetadataCache

func (db *DB) GetMetadataCache(ecosystem, name string) (*MetadataCacheEntry, error)

func (*DB) GetMostPopularPackages

func (db *DB) GetMostPopularPackages(limit int) ([]PopularPackage, error)

func (*DB) GetPackageByEcosystemName

func (db *DB) GetPackageByEcosystemName(ecosystem, name string) (*Package, error)

func (*DB) GetPackageByPURL

func (db *DB) GetPackageByPURL(purl string) (*Package, error)

func (*DB) GetPackagesNeedingVulnSync

func (db *DB) GetPackagesNeedingVulnSync(limit int, minAge time.Duration) ([]Package, error)

func (*DB) GetRecentlyCachedPackages

func (db *DB) GetRecentlyCachedPackages(limit int) ([]RecentPackage, error)

func (*DB) GetTotalCacheSize

func (db *DB) GetTotalCacheSize() (int64, error)

func (*DB) GetVersionByPURL

func (db *DB) GetVersionByPURL(purl string) (*Version, error)

func (*DB) GetVersionsByPackagePURL

func (db *DB) GetVersionsByPackagePURL(packagePURL string) ([]Version, error)

func (*DB) GetVulnCountForPackage

func (db *DB) GetVulnCountForPackage(ecosystem, name string) (int64, error)

func (*DB) GetVulnerabilitiesForPackage

func (db *DB) GetVulnerabilitiesForPackage(ecosystem, name string) ([]Vulnerability, error)

func (*DB) GetVulnsSyncedAt

func (db *DB) GetVulnsSyncedAt(ecosystem, name string) (time.Time, error)

func (*DB) HasColumn

func (db *DB) HasColumn(table, column string) (bool, error)

HasColumn checks if a column exists in a table.

func (*DB) HasTable

func (db *DB) HasTable(name string) (bool, error)

HasTable checks if a table exists in the database.

func (*DB) ListCachedPackages

func (db *DB) ListCachedPackages(ecosystem string, sortBy string, limit int, offset int) ([]PackageListItem, error)

func (*DB) MarkArtifactCached

func (db *DB) MarkArtifactCached(versionPURL, filename, storagePath, contentHash string, size int64, contentType string) error

func (*DB) MigrateSchema

func (db *DB) MigrateSchema() error

MigrateSchema applies any unapplied migrations in order. For a fully migrated database this executes a single SELECT query.

func (*DB) OptimizeForBulkWrites

func (db *DB) OptimizeForBulkWrites() error

func (*DB) OptimizeForReads

func (db *DB) OptimizeForReads() error

func (*DB) Path

func (db *DB) Path() string

func (*DB) Rebind

func (db *DB) Rebind(query string) string

func (*DB) RecordArtifactHit

func (db *DB) RecordArtifactHit(versionPURL, filename string) error

func (*DB) SchemaVersion

func (db *DB) SchemaVersion() (int, error)

func (*DB) SearchPackages

func (db *DB) SearchPackages(query string, ecosystem string, limit int, offset int) ([]SearchResult, error)

func (*DB) SetVulnsSyncedAt

func (db *DB) SetVulnsSyncedAt(ecosystem, name string) error

func (*DB) UpsertArtifact

func (db *DB) UpsertArtifact(a *Artifact) error

func (*DB) UpsertMetadataCache

func (db *DB) UpsertMetadataCache(entry *MetadataCacheEntry) error

func (*DB) UpsertPackage

func (db *DB) UpsertPackage(pkg *Package) error

func (*DB) UpsertVersion

func (db *DB) UpsertVersion(v *Version) error

func (*DB) UpsertVulnerability

func (db *DB) UpsertVulnerability(v *Vulnerability) error

type Dialect

type Dialect string
const (
	DialectSQLite   Dialect = "sqlite"
	DialectPostgres Dialect = "postgres"
)

type EnrichmentStats

type EnrichmentStats struct {
	TotalPackages        int64
	EnrichedPackages     int64
	VulnSyncedPackages   int64
	TotalVulnerabilities int64
	CriticalVulns        int64
	HighVulns            int64
	MediumVulns          int64
	LowVulns             int64
}

type MetadataCacheEntry

type MetadataCacheEntry struct {
	ID           int64          `db:"id" json:"id"`
	Ecosystem    string         `db:"ecosystem" json:"ecosystem"`
	Name         string         `db:"name" json:"name"`
	StoragePath  string         `db:"storage_path" json:"storage_path"`
	ETag         sql.NullString `db:"etag" json:"etag,omitempty"`
	ContentType  sql.NullString `db:"content_type" json:"content_type,omitempty"`
	Size         sql.NullInt64  `db:"size" json:"size,omitempty"`
	LastModified sql.NullTime   `db:"last_modified" json:"last_modified,omitempty"`
	FetchedAt    sql.NullTime   `db:"fetched_at" json:"fetched_at,omitempty"`
	CreatedAt    time.Time      `db:"created_at" json:"created_at"`
	UpdatedAt    time.Time      `db:"updated_at" json:"updated_at"`
}

MetadataCacheEntry represents a cached metadata blob for offline serving.

type Package

type Package struct {
	ID            int64          `db:"id" json:"id"`
	PURL          string         `db:"purl" json:"purl"`
	Ecosystem     string         `db:"ecosystem" json:"ecosystem"`
	Name          string         `db:"name" json:"name"`
	LatestVersion sql.NullString `db:"latest_version" json:"latest_version,omitempty"`
	License       sql.NullString `db:"license" json:"license,omitempty"`
	Description   sql.NullString `db:"description" json:"description,omitempty"`
	Homepage      sql.NullString `db:"homepage" json:"homepage,omitempty"`
	RepositoryURL sql.NullString `db:"repository_url" json:"repository_url,omitempty"`
	RegistryURL   sql.NullString `db:"registry_url" json:"registry_url,omitempty"`
	SupplierName  sql.NullString `db:"supplier_name" json:"supplier_name,omitempty"`
	SupplierType  sql.NullString `db:"supplier_type" json:"supplier_type,omitempty"`
	Source        sql.NullString `db:"source" json:"source,omitempty"`
	EnrichedAt    sql.NullTime   `db:"enriched_at" json:"enriched_at,omitempty"`
	VulnsSyncedAt sql.NullTime   `db:"vulns_synced_at" json:"vulns_synced_at,omitempty"`
	CreatedAt     time.Time      `db:"created_at" json:"created_at"`
	UpdatedAt     time.Time      `db:"updated_at" json:"updated_at"`
}

Package represents a package in the database. Schema is compatible with git-pkgs.

type PackageListItem

type PackageListItem struct {
	Ecosystem     string         `db:"ecosystem"`
	Name          string         `db:"name"`
	LatestVersion sql.NullString `db:"latest_version"`
	License       sql.NullString `db:"license"`
	Hits          int64          `db:"hits"`
	Size          int64          `db:"size"`
	CachedAt      sql.NullString `db:"cached_at"`
	VulnCount     int64          `db:"vuln_count"`
}

type PopularPackage

type PopularPackage struct {
	Ecosystem string `db:"ecosystem"`
	Name      string `db:"name"`
	Hits      int64  `db:"hits"`
	Size      int64  `db:"size"`
}

type RecentPackage

type RecentPackage struct {
	Ecosystem string    `db:"ecosystem"`
	Name      string    `db:"name"`
	Version   string    `db:"version"`
	CachedAt  time.Time `db:"fetched_at"`
	Size      int64     `db:"size"`
}

type SearchResult

type SearchResult struct {
	Ecosystem     string         `db:"ecosystem"`
	Name          string         `db:"name"`
	LatestVersion sql.NullString `db:"latest_version"`
	License       sql.NullString `db:"license"`
	Hits          int64          `db:"hits"`
	Size          int64          `db:"size"`
	CachedAt      sql.NullString `db:"cached_at"`
}

type Version

type Version struct {
	ID          int64          `db:"id" json:"id"`
	PURL        string         `db:"purl" json:"purl"`
	PackagePURL string         `db:"package_purl" json:"package_purl"`
	License     sql.NullString `db:"license" json:"license,omitempty"`
	PublishedAt sql.NullTime   `db:"published_at" json:"published_at,omitempty"`
	Integrity   sql.NullString `db:"integrity" json:"integrity,omitempty"`
	Yanked      bool           `db:"yanked" json:"yanked"`
	Source      sql.NullString `db:"source" json:"source,omitempty"`
	EnrichedAt  sql.NullTime   `db:"enriched_at" json:"enriched_at,omitempty"`
	CreatedAt   time.Time      `db:"created_at" json:"created_at"`
	UpdatedAt   time.Time      `db:"updated_at" json:"updated_at"`
}

Version represents a package version in the database. Schema is compatible with git-pkgs.

func (*Version) Version

func (v *Version) Version() string

Version extracts the version string from the PURL. e.g., "pkg:npm/lodash@4.17.21" -> "4.17.21"

type Vulnerability

type Vulnerability struct {
	ID           int64           `db:"id" json:"id"`
	VulnID       string          `db:"vuln_id" json:"vuln_id"`
	Ecosystem    string          `db:"ecosystem" json:"ecosystem"`
	PackageName  string          `db:"package_name" json:"package_name"`
	Severity     sql.NullString  `db:"severity" json:"severity,omitempty"`
	Summary      sql.NullString  `db:"summary" json:"summary,omitempty"`
	FixedVersion sql.NullString  `db:"fixed_version" json:"fixed_version,omitempty"`
	CVSSScore    sql.NullFloat64 `db:"cvss_score" json:"cvss_score,omitempty"`
	References   sql.NullString  `db:"references" json:"references,omitempty"`
	FetchedAt    sql.NullTime    `db:"fetched_at" json:"fetched_at,omitempty"`
	CreatedAt    time.Time       `db:"created_at" json:"created_at"`
	UpdatedAt    time.Time       `db:"updated_at" json:"updated_at"`
}

Vulnerability represents a cached vulnerability record.

Jump to

Keyboard shortcuts

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