Implement Backend API to List Packages within a Project
This commit is contained in:
@@ -39,10 +39,17 @@ class ProjectResponse(BaseModel):
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# Package format and platform enums
|
||||
PACKAGE_FORMATS = ["generic", "npm", "pypi", "docker", "deb", "rpm", "maven", "nuget", "helm"]
|
||||
PACKAGE_PLATFORMS = ["any", "linux", "darwin", "windows", "linux-amd64", "linux-arm64", "darwin-amd64", "darwin-arm64", "windows-amd64"]
|
||||
|
||||
|
||||
# Package schemas
|
||||
class PackageCreate(BaseModel):
|
||||
name: str
|
||||
description: Optional[str] = None
|
||||
format: str = "generic"
|
||||
platform: str = "any"
|
||||
|
||||
|
||||
class PackageResponse(BaseModel):
|
||||
@@ -50,6 +57,8 @@ class PackageResponse(BaseModel):
|
||||
project_id: UUID
|
||||
name: str
|
||||
description: Optional[str]
|
||||
format: str
|
||||
platform: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
@@ -57,6 +66,36 @@ class PackageResponse(BaseModel):
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class TagSummary(BaseModel):
|
||||
"""Lightweight tag info for embedding in package responses"""
|
||||
name: str
|
||||
artifact_id: str
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class PackageDetailResponse(BaseModel):
|
||||
"""Package with aggregated metadata"""
|
||||
id: UUID
|
||||
project_id: UUID
|
||||
name: str
|
||||
description: Optional[str]
|
||||
format: str
|
||||
platform: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
# Aggregated fields
|
||||
tag_count: int = 0
|
||||
artifact_count: int = 0
|
||||
total_size: int = 0
|
||||
latest_tag: Optional[str] = None
|
||||
latest_upload_at: Optional[datetime] = None
|
||||
# Recent tags (limit 5)
|
||||
recent_tags: List[TagSummary] = []
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# Artifact schemas
|
||||
class ArtifactResponse(BaseModel):
|
||||
id: str
|
||||
|
||||
Reference in New Issue
Block a user