// Package domain contains pure domain models with no external dependencies.
package domain

import "time"

// Repo represents a git repository.
type Repo struct {
	ID          int64
	Owner       string
	Name        string
	FullName    string // owner/name
	Description string
	Private     bool
	CloneSSH    string // git@git.threesix.ai:owner/name.git
	CloneHTTP   string // https://git.threesix.ai/owner/name.git
	HTMLURL     string // https://git.threesix.ai/owner/name
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

// DeployKey represents an SSH key for repository access.
type DeployKey struct {
	ID        int64
	RepoID    int64
	Title     string
	PublicKey string
	ReadOnly  bool
	CreatedAt time.Time
}

// RepoWebhook represents a webhook configuration on a repository.
type RepoWebhook struct {
	ID       int64
	RepoID   int64
	URL      string
	Secret   string
	Events   []string
	Active   bool
	HookType string // gitea, woodpecker, etc.
}
