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 }