package kernelimage

import "github.com/tidbcloud/devops/api"

// BuildCallbackImage contains the image-specific facts in one completed TiBuild
// delivery batch.
type BuildCallbackImage struct {
	SourceRepository string `json:"source_repository" binding:"required"`
	SourceTag        string `json:"source_tag" binding:"required"`
	SourceDigest     string `json:"source_digest"`
}

// BuildCallbackReq contains immutable upstream facts for one completed TiBuild
// delivery batch. DevOps derives one release per image and one delivery
// operation for the complete batch.
type BuildCallbackReq struct {
	SourceApplicant string               `json:"source_applicant" binding:"omitempty,email"`
	SourceReleaseID string               `json:"source_release_id"`
	SourceChangeID  string               `json:"source_change_id"`
	Repo            string               `json:"repo" binding:"required"`
	Branch          string               `json:"branch"`
	CommitSHA       string               `json:"commit_sha" binding:"required"`
	GitTag          string               `json:"git_tag"`
	Images          []BuildCallbackImage `json:"images" binding:"required,min=1,dive"`
}

type BuildCallbackResp struct {
	api.BaseResp `json:",inline"`
	Releases     []*Release `json:"releases"`
	InstanceID   *uint64    `json:"instance_id"`
}
