Skip to main content

relay_knowledge/api/operations/
repository.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{
4    api::{ApiMetadata, CodeRepositoryFreshnessDiagnostics, CodeRepositoryScopeMetadata},
5    domain::{
6        CodeFeatureFlagGraph, CodeFeatureFlagRequest, CodeImpactPathGroups, CodeImpactRequest,
7        CodeIndexCheckpoint, CodeIndexSummary, CodeIndexTaskRecord, CodeRepositoryRegistration,
8        CodeRepositoryRemovalSummary, CodeRepositoryReport, CodeRepositoryScopePreview,
9        CodeRepositoryStatus, CodeRetrievalHit, CodeRetrievalRequest, CodeScopeRetentionSummary,
10        SoftwareBuildTarget, SoftwareComponent, SoftwareDependencyUsage, SoftwareDesignElement,
11        SoftwareFile, SoftwareGlobalRequest, SoftwareGlobalStatus, SoftwareIacResource,
12        SoftwareRelationship, SoftwareSdkUsage, SoftwareTopic,
13    },
14};
15
16/// Code repository registration request.
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
18pub struct CodeRepositoryRegisterRequest {
19    pub root_path: String,
20    #[serde(default)]
21    pub alias: String,
22    #[serde(default)]
23    pub path_filters: Vec<String>,
24    #[serde(default)]
25    pub language_filters: Vec<String>,
26}
27
28/// Code repository registration response.
29#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30pub struct CodeRepositoryRegisterResponse {
31    pub metadata: ApiMetadata,
32    pub registration: CodeRepositoryRegistration,
33    pub status: CodeRepositoryStatus,
34}
35
36/// Indexed code repository list response.
37#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
38pub struct CodeRepositoryListResponse {
39    pub metadata: ApiMetadata,
40    pub repositories: Vec<CodeRepositoryStatus>,
41}
42
43/// Code repository removal response.
44#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
45pub struct CodeRepositoryRemoveResponse {
46    pub metadata: ApiMetadata,
47    pub removed_status: CodeRepositoryStatus,
48    pub summary: CodeRepositoryRemovalSummary,
49}
50
51/// Code repository index response.
52#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
53pub struct CodeRepositoryIndexResponse {
54    pub metadata: ApiMetadata,
55    pub scope: CodeRepositoryScopeMetadata,
56    pub summary: CodeIndexSummary,
57    pub status: CodeRepositoryStatus,
58}
59
60/// Code repository index start response for queued or no-op index requests.
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
62pub struct CodeRepositoryIndexStartResponse {
63    pub metadata: ApiMetadata,
64    pub scope: CodeRepositoryScopeMetadata,
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub summary: Option<CodeIndexSummary>,
67    pub status: CodeRepositoryStatus,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub task: Option<CodeIndexTaskRecord>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub checkpoint: Option<CodeIndexCheckpoint>,
72}
73
74/// Code repository index task reset response.
75#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
76pub struct CodeRepositoryIndexResetResponse {
77    pub metadata: ApiMetadata,
78    pub status: CodeRepositoryStatus,
79    pub reset_task_count: usize,
80    pub reset_tasks: Vec<CodeIndexTaskRecord>,
81    #[serde(skip_serializing_if = "Option::is_none")]
82    pub active_task: Option<CodeIndexTaskRecord>,
83    #[serde(skip_serializing_if = "Option::is_none")]
84    pub checkpoint: Option<CodeIndexCheckpoint>,
85    pub retention: CodeScopeRetentionSummary,
86}
87
88/// Code repository scope preview response.
89#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
90pub struct CodeRepositoryScopePreviewResponse {
91    pub metadata: ApiMetadata,
92    pub scope: CodeRepositoryScopeMetadata,
93    pub preview: CodeRepositoryScopePreview,
94}
95
96/// Code repository retrieval response.
97#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
98pub struct CodeRepositoryQueryResponse {
99    pub metadata: ApiMetadata,
100    pub scope: CodeRepositoryScopeMetadata,
101    #[serde(default = "CodeRepositoryFreshnessDiagnostics::legacy_unknown")]
102    pub freshness: CodeRepositoryFreshnessDiagnostics,
103    pub request: CodeRetrievalRequest,
104    pub results: Vec<CodeRetrievalHit>,
105    #[serde(skip_serializing_if = "Option::is_none")]
106    pub degraded_reason: Option<String>,
107}
108
109/// Code repository feature-flag graph response.
110#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
111pub struct CodeRepositoryFeatureFlagsResponse {
112    pub metadata: ApiMetadata,
113    pub scope: CodeRepositoryScopeMetadata,
114    #[serde(default = "CodeRepositoryFreshnessDiagnostics::legacy_unknown")]
115    pub freshness: CodeRepositoryFreshnessDiagnostics,
116    pub request: CodeFeatureFlagRequest,
117    pub flags: Vec<CodeFeatureFlagGraph>,
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub degraded_reason: Option<String>,
120}
121
122/// Code repository impact response.
123#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
124pub struct CodeRepositoryImpactResponse {
125    pub metadata: ApiMetadata,
126    pub scope: CodeRepositoryScopeMetadata,
127    pub request: CodeImpactRequest,
128    pub path_groups: CodeImpactPathGroups,
129    pub results: Vec<CodeRetrievalHit>,
130}
131
132/// Code repository status response.
133#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
134pub struct CodeRepositoryStatusResponse {
135    pub metadata: ApiMetadata,
136    pub status: CodeRepositoryStatus,
137    #[serde(skip_serializing_if = "Option::is_none")]
138    pub active_task: Option<CodeIndexTaskRecord>,
139    #[serde(skip_serializing_if = "Option::is_none")]
140    pub checkpoint: Option<CodeIndexCheckpoint>,
141    pub retention: CodeScopeRetentionSummary,
142}
143
144/// Code repository operations report response.
145#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
146pub struct CodeRepositoryReportResponse {
147    pub metadata: ApiMetadata,
148    pub scope: CodeRepositoryScopeMetadata,
149    pub report: CodeRepositoryReport,
150}
151
152/// Repository-scoped software global model projection response.
153#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
154pub struct SoftwareGlobalResponse {
155    pub metadata: ApiMetadata,
156    pub scope: CodeRepositoryScopeMetadata,
157    pub request: SoftwareGlobalRequest,
158    pub status: SoftwareGlobalStatus,
159    pub components: Vec<SoftwareComponent>,
160    pub dependency_usages: Vec<SoftwareDependencyUsage>,
161    pub sdk_usages: Vec<SoftwareSdkUsage>,
162    pub files: Vec<SoftwareFile>,
163    pub topics: Vec<SoftwareTopic>,
164    pub relationships: Vec<SoftwareRelationship>,
165    pub build_targets: Vec<SoftwareBuildTarget>,
166    pub iac_resources: Vec<SoftwareIacResource>,
167    pub design_elements: Vec<SoftwareDesignElement>,
168}