This commit is contained in:
121
internal/model/model.go
Normal file
121
internal/model/model.go
Normal file
@@ -0,0 +1,121 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
// Resource represents a normalized Kubernetes manifest.
|
||||
type Resource struct {
|
||||
ID string `json:"id"`
|
||||
APIVersion string `json:"apiVersion"`
|
||||
Kind string `json:"kind"`
|
||||
Name string `json:"name"`
|
||||
Namespace string `json:"namespace"`
|
||||
ClusterScoped bool `json:"clusterScoped"`
|
||||
Labels map[string]string `json:"labels,omitempty"`
|
||||
Raw map[string]any `json:"raw"`
|
||||
IsSensitive bool `json:"isSensitive"`
|
||||
KeyNames []string `json:"keyNames,omitempty"`
|
||||
References []ResourceReference `json:"references,omitempty"`
|
||||
OwnerRefs []OwnerReference `json:"ownerReferences,omitempty"`
|
||||
WorkloadMeta *WorkloadMetadata `json:"workloadMeta,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
type ResourceReference struct {
|
||||
Kind string `json:"kind"`
|
||||
Name string `json:"name"`
|
||||
Namespace string `json:"namespace,omitempty"`
|
||||
Relation string `json:"relation"`
|
||||
}
|
||||
|
||||
type OwnerReference struct {
|
||||
Kind string `json:"kind"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type WorkloadMetadata struct {
|
||||
PodTemplateLabels map[string]string `json:"podTemplateLabels,omitempty"`
|
||||
ServiceSelectors map[string]string `json:"serviceSelectors,omitempty"`
|
||||
}
|
||||
|
||||
type ParseIssue struct {
|
||||
Document int `json:"document"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type ParseSummary struct {
|
||||
Resources int `json:"resources"`
|
||||
Issues []ParseIssue `json:"issues"`
|
||||
}
|
||||
|
||||
type Dataset struct {
|
||||
Resources map[string]*Resource `json:"resources"`
|
||||
Summary ParseSummary `json:"summary"`
|
||||
Duplicates []string `json:"duplicates,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
ModifiedAt time.Time `json:"modifiedAt"`
|
||||
}
|
||||
|
||||
type GraphNode struct {
|
||||
ID string `json:"id"`
|
||||
Kind string `json:"kind"`
|
||||
Name string `json:"name"`
|
||||
Namespace string `json:"namespace"`
|
||||
Labels map[string]string `json:"labels,omitempty"`
|
||||
HealthHint string `json:"healthHint,omitempty"`
|
||||
IsSensitive bool `json:"isSensitive"`
|
||||
IsGroup bool `json:"isGroup,omitempty"`
|
||||
GroupBy string `json:"groupBy,omitempty"`
|
||||
GroupKey string `json:"groupKey,omitempty"`
|
||||
MemberCount int `json:"memberCount,omitempty"`
|
||||
}
|
||||
|
||||
type GraphEdge struct {
|
||||
Source string `json:"source"`
|
||||
Target string `json:"target"`
|
||||
RelationType string `json:"relationType"`
|
||||
Label string `json:"label,omitempty"`
|
||||
}
|
||||
|
||||
type GraphStats struct {
|
||||
TotalNodes int `json:"totalNodes"`
|
||||
TotalEdges int `json:"totalEdges"`
|
||||
Kinds map[string]int `json:"kinds"`
|
||||
}
|
||||
|
||||
type GraphResponse struct {
|
||||
Nodes []GraphNode `json:"nodes"`
|
||||
Edges []GraphEdge `json:"edges"`
|
||||
Stats GraphStats `json:"stats"`
|
||||
Groups []GraphGroup `json:"groups,omitempty"`
|
||||
Findings []Finding `json:"findings,omitempty"`
|
||||
}
|
||||
|
||||
type GraphGroup struct {
|
||||
Key string `json:"key"`
|
||||
Label string `json:"label"`
|
||||
Mode string `json:"mode"`
|
||||
Count int `json:"count"`
|
||||
Collapsed bool `json:"collapsed"`
|
||||
}
|
||||
|
||||
type Finding struct {
|
||||
ID string `json:"id"`
|
||||
Category string `json:"category"`
|
||||
Rule string `json:"rule"`
|
||||
Severity string `json:"severity"`
|
||||
ResourceID string `json:"resourceId,omitempty"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type DiffItem struct {
|
||||
ID string `json:"id"`
|
||||
Kind string `json:"kind"`
|
||||
Name string `json:"name"`
|
||||
Namespace string `json:"namespace,omitempty"`
|
||||
}
|
||||
|
||||
type DiffResponse struct {
|
||||
Added []DiffItem `json:"added"`
|
||||
Removed []DiffItem `json:"removed"`
|
||||
Changed []DiffItem `json:"changed"`
|
||||
}
|
||||
Reference in New Issue
Block a user