// Package domain contains core business entities. package domain import "time" // Credential represents a stored secret/credential for infrastructure adapters. // Credentials are encrypted at rest and accessed by key name. type Credential struct { // Key is the unique identifier (e.g., "GITEA_TOKEN", "CLOUDFLARE_API_TOKEN") Key string // Value is the credential value (stored encrypted in database) Value string // Description explains what this credential is for Description string // Category groups related credentials (e.g., "gitea", "cloudflare", "woodpecker") Category string // CreatedAt is when the credential was first stored CreatedAt time.Time // UpdatedAt is when the credential was last modified UpdatedAt time.Time // UpdatedBy tracks who last modified the credential UpdatedBy string } // CredentialCategories for grouping. const ( CredentialCategoryGitea = "gitea" CredentialCategoryCloudflare = "cloudflare" CredentialCategoryWoodpecker = "woodpecker" CredentialCategoryDatabase = "database" CredentialCategoryRegistry = "registry" CredentialCategoryWorker = "worker" CredentialCategoryStorage = "storage" ) // Known credential keys. const ( // Gitea CredKeyGiteaToken = "GITEA_TOKEN" CredKeyGiteaURL = "GITEA_URL" // Cloudflare CredKeyCloudflareAPIToken = "CLOUDFLARE_API_TOKEN" CredKeyCloudflareZoneID = "CLOUDFLARE_ZONE_ID" // Woodpecker CredKeyWoodpeckerURL = "WOODPECKER_URL" CredKeyWoodpeckerAPIToken = "WOODPECKER_API_TOKEN" CredKeyWoodpeckerWebhookSecret = "WOODPECKER_WEBHOOK_SECRET" // Registry CredKeyRegistryURL = "REGISTRY_URL" // GCS CredKeyGCSBucket = "GCS_BUCKET" CredKeyGCSServiceAccountJSON = "GCS_SERVICE_ACCOUNT_JSON" )