// Package port defines interfaces (ports) for external dependencies. // These interfaces define the contracts between the application core and // infrastructure adapters, enabling testability and flexibility. package port import ( "context" "github.com/orchard9/rdev/internal/domain" ) // ProjectRepository defines operations for managing projects. type ProjectRepository interface { // List returns all available projects. List(ctx context.Context) ([]domain.Project, error) // Get returns a project by ID. Get(ctx context.Context, id domain.ProjectID) (*domain.Project, error) // Exists checks if a project exists. Exists(ctx context.Context, id domain.ProjectID) (bool, error) // Register adds a new project to the repository. Register(ctx context.Context, project *domain.Project) error // Unregister removes a project from the repository. Unregister(ctx context.Context, id domain.ProjectID) error // RefreshStatus updates the status of all projects. RefreshStatus(ctx context.Context) error }