// Package domain contains core business entities. package domain import "time" // CIRepo represents a repository's CI/CD configuration. type CIRepo struct { // ID is the CI system's internal ID for this repo ID int64 // ForgeRemoteID is the ID from the forge (e.g., Gitea repo ID) ForgeRemoteID int64 // Owner is the repository owner (org or user) Owner string // Name is the repository name Name string // FullName is owner/name FullName string // CloneURL is the URL to clone the repo CloneURL string // Active indicates if CI is enabled for this repo Active bool // AllowPullRequests allows PRs to trigger builds AllowPullRequests bool // Visibility: public, private, internal Visibility string // CreatedAt is when CI was activated CreatedAt time.Time // UpdatedAt is when CI config was last modified UpdatedAt time.Time } // CISecret represents a secret for use in CI pipelines. type CISecret struct { // Name is the secret name (e.g., "DOCKER_PASSWORD") Name string // Value is the secret value (encrypted at rest) Value string // Events controls when the secret is available (e.g., "push", "pull_request") Events []string // Images limits which container images can use this secret Images []string } // CIPipelineError represents an error from the CI system. type CIPipelineError struct { // Type: linter, deprecation, compiler, generic, bad_habit Type string `json:"type"` // Message is the error description Message string `json:"message"` // IsWarning indicates this is a warning, not a fatal error IsWarning bool `json:"is_warning"` } // CIPipeline represents a CI pipeline execution. type CIPipeline struct { // ID is the pipeline ID ID int64 // Number is the pipeline number (increments per repo) Number int64 // Status: pending, running, success, failure, killed, blocked, error Status string // Event: push, pull_request, tag, cron, manual Event string // Branch that triggered the pipeline Branch string // Commit SHA Commit string // Message is the commit message Message string // Author who triggered the pipeline Author string // Started timestamp Started time.Time // Finished timestamp (zero if still running) Finished time.Time // Errors contains any pipeline errors (e.g., YAML validation failures) Errors []CIPipelineError } // CIPipelineStep represents a step within a CI pipeline. type CIPipelineStep struct { // ID is the step's unique ID (used for fetching logs) ID int64 // Name is the step name from the pipeline config Name string // Status: pending, running, success, failure, killed, skipped, error Status string // ExitCode from the step's command (nil if not finished) ExitCode *int // Duration in seconds Duration int // Error message if step failed Error string // Log contains the last N lines of output (only populated for failed steps) Log string } // CIPipelineSteps contains step details for a pipeline. type CIPipelineSteps struct { // PipelineNumber is the pipeline number PipelineNumber int64 // URL is the direct link to view this pipeline in the CI UI URL string // Steps in execution order Steps []CIPipelineStep }