Files
at-container-registry/pkg/appview/db/models.go
2025-10-08 20:50:27 -05:00

123 lines
2.7 KiB
Go

package db
import "time"
// User represents a user in the system
type User struct {
DID string
Handle string
PDSEndpoint string
Avatar string
LastSeen time.Time
}
// Manifest represents an OCI manifest stored in the cache
type Manifest struct {
ID int64
DID string
Repository string
Digest string
HoldEndpoint string
SchemaVersion int
MediaType string
ConfigDigest string
ConfigSize int64
CreatedAt time.Time
Title string
Description string
SourceURL string
DocumentationURL string
Licenses string
IconURL string
}
// Layer represents a layer in a manifest
type Layer struct {
ManifestID int64
Digest string
Size int64
MediaType string
LayerIndex int
}
// Tag represents a tag pointing to a manifest
type Tag struct {
ID int64
DID string
Repository string
Tag string
Digest string
CreatedAt time.Time
}
// Push represents a combined tag and manifest for the recent pushes view
type Push struct {
DID string
Handle string
Repository string
Tag string
Digest string
Title string
Description string
IconURL string
StarCount int
PullCount int
CreatedAt time.Time
}
// Repository represents an aggregated view of a user's repository
type Repository struct {
Name string
TagCount int
ManifestCount int
LastPush time.Time
Tags []Tag
Manifests []Manifest
Title string
Description string
SourceURL string
DocumentationURL string
Licenses string
IconURL string
}
// RepositoryStats represents statistics for a repository
type RepositoryStats struct {
DID string `json:"did"`
Repository string `json:"repository"`
StarCount int `json:"star_count"` // Calculated from stars table, not stored
PullCount int `json:"pull_count"`
LastPull *time.Time `json:"last_pull,omitempty"`
PushCount int `json:"push_count"`
LastPush *time.Time `json:"last_push,omitempty"`
}
// FeaturedRepository represents a repository in the featured section
type FeaturedRepository struct {
OwnerDID string
OwnerHandle string
Repository string
Title string
Description string
IconURL string
StarCount int
PullCount int
}
// RepositoryWithStats combines repository data with statistics
type RepositoryWithStats struct {
Repository
Stats RepositoryStats
}
// RepoCardData contains all data needed to render a repository card
type RepoCardData struct {
OwnerHandle string
Repository string
Title string
Description string
IconURL string
StarCount int
PullCount int
}