Documentation
¶
Index ¶
- Constants
- func Exists(path string) bool
- type Artifact
- type CacheStats
- type DB
- func (db *DB) ClearArtifactCache(versionPURL, filename string) error
- func (db *DB) CountCachedPackages(ecosystem string) (int64, error)
- func (db *DB) CountSearchResults(query string, ecosystem string) (int64, error)
- func (db *DB) CreateSchema() error
- func (db *DB) DeleteVulnerabilitiesForPackage(ecosystem, name string) error
- func (db *DB) Dialect() Dialect
- func (db *DB) EnsureArtifactsTable() error
- func (db *DB) EnsureMetadataCacheTable() error
- func (db *DB) GetArtifact(versionPURL, filename string) (*Artifact, error)
- func (db *DB) GetArtifactByPath(storagePath string) (*Artifact, error)
- func (db *DB) GetArtifactsByVersionPURL(versionPURL string) ([]Artifact, error)
- func (db *DB) GetCacheStats() (*CacheStats, error)
- func (db *DB) GetCachedArtifactCount() (int64, error)
- func (db *DB) GetEnrichmentStats() (*EnrichmentStats, error)
- func (db *DB) GetLeastRecentlyUsedArtifacts(limit int) ([]Artifact, error)
- func (db *DB) GetMetadataCache(ecosystem, name string) (*MetadataCacheEntry, error)
- func (db *DB) GetMostPopularPackages(limit int) ([]PopularPackage, error)
- func (db *DB) GetPackageByEcosystemName(ecosystem, name string) (*Package, error)
- func (db *DB) GetPackageByPURL(purl string) (*Package, error)
- func (db *DB) GetPackagesNeedingVulnSync(limit int, minAge time.Duration) ([]Package, error)
- func (db *DB) GetRecentlyCachedPackages(limit int) ([]RecentPackage, error)
- func (db *DB) GetTotalCacheSize() (int64, error)
- func (db *DB) GetVersionByPURL(purl string) (*Version, error)
- func (db *DB) GetVersionsByPackagePURL(packagePURL string) ([]Version, error)
- func (db *DB) GetVulnCountForPackage(ecosystem, name string) (int64, error)
- func (db *DB) GetVulnerabilitiesForPackage(ecosystem, name string) ([]Vulnerability, error)
- func (db *DB) GetVulnsSyncedAt(ecosystem, name string) (time.Time, error)
- func (db *DB) HasColumn(table, column string) (bool, error)
- func (db *DB) HasTable(name string) (bool, error)
- func (db *DB) ListCachedPackages(ecosystem string, sortBy string, limit int, offset int) ([]PackageListItem, error)
- func (db *DB) MarkArtifactCached(versionPURL, filename, storagePath, contentHash string, size int64, ...) error
- func (db *DB) MigrateSchema() error
- func (db *DB) OptimizeForBulkWrites() error
- func (db *DB) OptimizeForReads() error
- func (db *DB) Path() string
- func (db *DB) Rebind(query string) string
- func (db *DB) RecordArtifactHit(versionPURL, filename string) error
- func (db *DB) SchemaVersion() (int, error)
- func (db *DB) SearchPackages(query string, ecosystem string, limit int, offset int) ([]SearchResult, error)
- func (db *DB) SetVulnsSyncedAt(ecosystem, name string) error
- func (db *DB) UpsertArtifact(a *Artifact) error
- func (db *DB) UpsertMetadataCache(entry *MetadataCacheEntry) error
- func (db *DB) UpsertPackage(pkg *Package) error
- func (db *DB) UpsertVersion(v *Version) error
- func (db *DB) UpsertVulnerability(v *Vulnerability) error
- type Dialect
- type EnrichmentStats
- type MetadataCacheEntry
- type Package
- type PackageListItem
- type PopularPackage
- type RecentPackage
- type SearchResult
- type Version
- type Vulnerability
Constants ¶
const SchemaVersion = 1
Variables ¶
This section is empty.
Functions ¶
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.
type CacheStats ¶
type DB ¶
func OpenOrCreate ¶
func OpenPostgres ¶
func OpenPostgresOrCreate ¶
func (*DB) ClearArtifactCache ¶
func (*DB) CountSearchResults ¶
func (*DB) CreateSchema ¶
func (*DB) DeleteVulnerabilitiesForPackage ¶
func (*DB) EnsureArtifactsTable ¶
EnsureArtifactsTable adds the artifacts table to an existing database (e.g., a git-pkgs database) if it doesn't already exist.
func (*DB) EnsureMetadataCacheTable ¶
EnsureMetadataCacheTable creates the metadata_cache table if it doesn't exist.
func (*DB) GetArtifactByPath ¶
func (*DB) GetArtifactsByVersionPURL ¶
func (*DB) GetCacheStats ¶
func (db *DB) GetCacheStats() (*CacheStats, error)
func (*DB) GetCachedArtifactCount ¶
func (*DB) GetEnrichmentStats ¶
func (db *DB) GetEnrichmentStats() (*EnrichmentStats, error)
func (*DB) GetLeastRecentlyUsedArtifacts ¶
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) GetPackagesNeedingVulnSync ¶
func (*DB) GetRecentlyCachedPackages ¶
func (db *DB) GetRecentlyCachedPackages(limit int) ([]RecentPackage, error)
func (*DB) GetTotalCacheSize ¶
func (*DB) GetVersionsByPackagePURL ¶
func (*DB) GetVulnCountForPackage ¶
func (*DB) GetVulnerabilitiesForPackage ¶
func (db *DB) GetVulnerabilitiesForPackage(ecosystem, name string) ([]Vulnerability, error)
func (*DB) GetVulnsSyncedAt ¶
func (*DB) ListCachedPackages ¶
func (*DB) MarkArtifactCached ¶
func (*DB) MigrateSchema ¶
MigrateSchema applies any unapplied migrations in order. For a fully migrated database this executes a single SELECT query.
func (*DB) OptimizeForBulkWrites ¶
func (*DB) OptimizeForReads ¶
func (*DB) RecordArtifactHit ¶
func (*DB) SchemaVersion ¶
func (*DB) SearchPackages ¶
func (*DB) SetVulnsSyncedAt ¶
func (*DB) UpsertArtifact ¶
func (*DB) UpsertMetadataCache ¶
func (db *DB) UpsertMetadataCache(entry *MetadataCacheEntry) error
func (*DB) UpsertPackage ¶
func (*DB) UpsertVersion ¶
func (*DB) UpsertVulnerability ¶
func (db *DB) UpsertVulnerability(v *Vulnerability) error
type EnrichmentStats ¶
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 RecentPackage ¶
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.
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.