package dto

import "time"

type UADashboardStatusResponse struct {
	State                    string                       `json:"state"`
	SourceID                 string                       `json:"sourceId"`
	SourceCommitSHA          string                       `json:"sourceCommitSha,omitempty"`
	DashboardSourceCommitSHA string                       `json:"dashboardSourceCommitSha,omitempty"`
	DashboardCommitSHA       string                       `json:"dashboardCommitSha,omitempty"`
	UpdateAvailable          bool                         `json:"updateAvailable"`
	PublishedAt              *time.Time                   `json:"publishedAt,omitempty"`
	CanImport                bool                         `json:"canImport"`
	AcceptedFormats          []string                     `json:"acceptedFormats"`
	Limits                   UADashboardLimitsResponse    `json:"limits"`
	Manifest                 *UADashboardManifestResponse `json:"manifest,omitempty"`
}

type UADashboardSourcePreviewResponse struct {
	RepoOwner       string `json:"repoOwner"`
	RepoName        string `json:"repoName"`
	SourceCommitSHA string `json:"sourceCommitSha"`
}

type UADashboardLimitsResponse struct {
	HTTPBytes      int64 `json:"httpBytes"`
	ExtractedBytes int64 `json:"extractedBytes"`
	FileBytes      int64 `json:"fileBytes"`
	Entries        int   `json:"entries"`
	JSONDepth      int   `json:"jsonDepth"`
}

type UADashboardManifestResponse struct {
	Files []UADashboardManifestFileResponse `json:"files"`
}

type UADashboardManifestFileResponse struct {
	Path    string `json:"path"`
	Bytes   int64  `json:"bytes"`
	BlobSHA string `json:"blobSha"`
}
