cairn/internal/api/types.go

117 lines
4.3 KiB
Go

package api
import (
"encoding/json"
"time"
)
type Repository struct {
ID uint `json:"id"`
Name string `json:"name"`
Owner string `json:"owner"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type Commit struct {
ID uint `json:"id"`
RepositoryID uint `json:"repository_id"`
SHA string `json:"sha"`
Author *string `json:"author,omitempty"`
Message *string `json:"message,omitempty"`
Branch *string `json:"branch,omitempty"`
CommittedAt *time.Time `json:"committed_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type Artifact struct {
ID uint `json:"id"`
RepositoryID uint `json:"repository_id"`
CommitID uint `json:"commit_id"`
BuildID *uint `json:"build_id,omitempty"`
RunID *uint `json:"run_id,omitempty"`
CrashSignatureID *uint `json:"crash_signature_id,omitempty"`
Type string `json:"type"`
BlobKey string `json:"blob_key"`
BlobSize int64 `json:"blob_size"`
CrashMessage *string `json:"crash_message,omitempty"`
StackTrace *string `json:"stack_trace,omitempty"`
Tags json.RawMessage `json:"tags,omitempty"`
Metadata json.RawMessage `json:"metadata,omitempty"`
CreatedAt time.Time `json:"created_at"`
RepoName string `json:"repo_name,omitempty"`
CommitSHA string `json:"commit_sha,omitempty"`
}
type Target struct {
ID uint `json:"id"`
RepositoryID uint `json:"repository_id"`
Name string `json:"name"`
Type string `json:"type"`
Tags json.RawMessage `json:"tags,omitempty"`
Metadata json.RawMessage `json:"metadata,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
RepoName string `json:"repo_name,omitempty"`
RunCount int64 `json:"run_count,omitempty"`
CorpusCount int64 `json:"corpus_count,omitempty"`
}
type Run struct {
ID uint `json:"id"`
TargetID uint `json:"target_id"`
CommitID uint `json:"commit_id"`
Status string `json:"status"`
StartedAt time.Time `json:"started_at"`
FinishedAt *time.Time `json:"finished_at,omitempty"`
Tags json.RawMessage `json:"tags,omitempty"`
Metadata json.RawMessage `json:"metadata,omitempty"`
CreatedAt time.Time `json:"created_at"`
TargetName string `json:"target_name,omitempty"`
RepoName string `json:"repo_name,omitempty"`
CommitSHA string `json:"commit_sha,omitempty"`
ArtifactCount int64 `json:"artifact_count,omitempty"`
}
type CorpusEntry struct {
ID uint `json:"id"`
TargetID uint `json:"target_id"`
RunID *uint `json:"run_id,omitempty"`
BlobKey string `json:"blob_key"`
BlobSize int64 `json:"blob_size"`
Fingerprint *string `json:"fingerprint,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type CrashSignature struct {
ID uint `json:"id"`
RepositoryID uint `json:"repository_id"`
Fingerprint string `json:"fingerprint"`
SampleTrace *string `json:"sample_trace,omitempty"`
FirstSeenAt time.Time `json:"first_seen_at"`
LastSeenAt time.Time `json:"last_seen_at"`
OccurrenceCount uint `json:"occurrence_count"`
}
type CrashGroup struct {
ID uint `json:"id"`
RepositoryID uint `json:"repository_id"`
CrashSignatureID uint `json:"crash_signature_id"`
Title string `json:"title"`
Status string `json:"status"`
ForgejoIssueID *int `json:"forgejo_issue_id,omitempty"`
FirstSeenAt time.Time `json:"first_seen_at"`
LastSeenAt time.Time `json:"last_seen_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
RepoName string `json:"repo_name,omitempty"`
Fingerprint string `json:"fingerprint,omitempty"`
OccurrenceCount uint `json:"occurrence_count,omitempty"`
SampleTrace *string `json:"sample_trace,omitempty"`
ForgejoIssueURL *string `json:"forgejo_issue_url,omitempty"`
}