mirror of
https://tangled.org/evan.jarrett.net/at-container-registry
synced 2026-04-25 19:00:34 +00:00
123 lines
2.7 KiB
Go
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
|
|
}
|