1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6pub struct Project {
7 #[serde(default, skip_deserializing, skip_serializing_if = "Option::is_none")]
8 pub id: Option<String>,
9 pub project_id: String,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub name: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub language: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub root_path: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub description: Option<String>,
18 #[serde(default, skip_serializing_if = "Vec::is_empty")]
19 pub aliases: Vec<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub search_text: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub extra: Option<Value>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
28pub struct Ingest {
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub id: Option<String>,
31 pub project_id: String,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub git_commit: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub git_branch: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub git_tag: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub project_version: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub source_modified_at: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub ingested_at: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub extra: Option<Value>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
50pub struct DocSource {
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub id: Option<String>,
53 pub project_id: String,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub ingest_id: Option<String>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub language: Option<String>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub source_kind: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub path: Option<String>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub tool_version: Option<String>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub hash: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub source_modified_at: Option<String>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub extra: Option<Value>,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
74pub struct Symbol {
75 #[serde(default, skip_deserializing, skip_serializing_if = "Option::is_none")]
76 pub id: Option<String>,
77 pub project_id: String,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub language: Option<String>,
80 pub symbol_key: String,
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub kind: Option<String>,
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub name: Option<String>,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 pub qualified_name: Option<String>,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub display_name: Option<String>,
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub signature: Option<String>,
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub signature_hash: Option<String>,
93 #[serde(skip_serializing_if = "Option::is_none")]
94 pub visibility: Option<String>,
95 #[serde(skip_serializing_if = "Option::is_none")]
96 pub is_static: Option<bool>,
97 #[serde(skip_serializing_if = "Option::is_none")]
98 pub is_async: Option<bool>,
99 #[serde(skip_serializing_if = "Option::is_none")]
100 pub is_const: Option<bool>,
101 #[serde(skip_serializing_if = "Option::is_none")]
102 pub is_deprecated: Option<bool>,
103 #[serde(skip_serializing_if = "Option::is_none")]
104 pub since: Option<String>,
105 #[serde(skip_serializing_if = "Option::is_none")]
106 pub stability: Option<String>,
107 #[serde(skip_serializing_if = "Option::is_none")]
108 pub source_path: Option<String>,
109 #[serde(skip_serializing_if = "Option::is_none")]
110 pub line: Option<u32>,
111 #[serde(skip_serializing_if = "Option::is_none")]
112 pub col: Option<u32>,
113 #[serde(skip_serializing_if = "Option::is_none")]
114 pub return_type: Option<TypeRef>,
115 #[serde(default, skip_serializing_if = "Vec::is_empty")]
116 pub params: Vec<Param>,
117 #[serde(default, skip_serializing_if = "Vec::is_empty")]
118 pub type_params: Vec<TypeParam>,
119 #[serde(default, skip_serializing_if = "Vec::is_empty")]
120 pub attributes: Vec<AttributeRef>,
121 #[serde(default, skip_serializing_if = "Vec::is_empty")]
122 pub source_ids: Vec<SourceId>,
123 #[serde(skip_serializing_if = "Option::is_none")]
124 pub doc_summary: Option<String>,
125 #[serde(skip_serializing_if = "Option::is_none")]
126 pub extra: Option<Value>,
127}
128
129#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
131pub struct TypeRef {
132 #[serde(skip_serializing_if = "Option::is_none")]
133 pub display: Option<String>,
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub canonical: Option<String>,
136 #[serde(skip_serializing_if = "Option::is_none")]
137 pub language: Option<String>,
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub symbol_key: Option<String>,
140 #[serde(default, skip_serializing_if = "Vec::is_empty")]
141 pub generics: Vec<Self>,
142 #[serde(default, skip_serializing_if = "Vec::is_empty")]
143 pub modifiers: Vec<String>,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
148pub struct Param {
149 pub name: String,
150 #[serde(skip_serializing_if = "Option::is_none")]
151 pub type_ref: Option<TypeRef>,
152 #[serde(skip_serializing_if = "Option::is_none")]
153 pub default_value: Option<String>,
154 #[serde(skip_serializing_if = "Option::is_none")]
155 pub is_optional: Option<bool>,
156}
157
158#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
160pub struct TypeParam {
161 pub name: String,
162 #[serde(default, skip_serializing_if = "Vec::is_empty")]
163 pub constraints: Vec<String>,
164}
165
166#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
168pub struct AttributeRef {
169 pub name: String,
170 #[serde(default, skip_serializing_if = "Vec::is_empty")]
171 pub args: Vec<String>,
172 #[serde(skip_serializing_if = "Option::is_none")]
173 pub target: Option<String>,
174}
175
176#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
178pub struct SourceId {
179 pub kind: String,
180 pub value: String,
181}
182
183#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
185pub struct DocBlock {
186 #[serde(default, skip_deserializing, skip_serializing_if = "Option::is_none")]
187 pub id: Option<String>,
188 pub project_id: String,
189 #[serde(skip_serializing_if = "Option::is_none")]
190 pub ingest_id: Option<String>,
191 #[serde(skip_serializing_if = "Option::is_none")]
192 pub symbol_key: Option<String>,
193 #[serde(skip_serializing_if = "Option::is_none")]
194 pub language: Option<String>,
195 #[serde(skip_serializing_if = "Option::is_none")]
196 pub source_kind: Option<String>,
197 #[serde(skip_serializing_if = "Option::is_none")]
198 pub doc_hash: Option<String>,
199 #[serde(skip_serializing_if = "Option::is_none")]
200 pub summary: Option<String>,
201 #[serde(skip_serializing_if = "Option::is_none")]
202 pub remarks: Option<String>,
203 #[serde(skip_serializing_if = "Option::is_none")]
204 pub returns: Option<String>,
205 #[serde(skip_serializing_if = "Option::is_none")]
206 pub value: Option<String>,
207 #[serde(default, skip_serializing_if = "Vec::is_empty")]
208 pub params: Vec<DocParam>,
209 #[serde(default, skip_serializing_if = "Vec::is_empty")]
210 pub type_params: Vec<DocTypeParam>,
211 #[serde(default, skip_serializing_if = "Vec::is_empty")]
212 pub exceptions: Vec<DocException>,
213 #[serde(default, skip_serializing_if = "Vec::is_empty")]
214 pub examples: Vec<DocExample>,
215 #[serde(default, skip_serializing_if = "Vec::is_empty")]
216 pub notes: Vec<String>,
217 #[serde(default, skip_serializing_if = "Vec::is_empty")]
218 pub warnings: Vec<String>,
219 #[serde(skip_serializing_if = "Option::is_none")]
220 pub safety: Option<String>,
221 #[serde(skip_serializing_if = "Option::is_none")]
222 pub panics: Option<String>,
223 #[serde(skip_serializing_if = "Option::is_none")]
224 pub errors: Option<String>,
225 #[serde(default, skip_serializing_if = "Vec::is_empty")]
226 pub see_also: Vec<SeeAlso>,
227 #[serde(skip_serializing_if = "Option::is_none")]
228 pub deprecated: Option<String>,
229 #[serde(skip_serializing_if = "Option::is_none")]
230 pub inherit_doc: Option<DocInherit>,
231 #[serde(default, skip_serializing_if = "Vec::is_empty")]
232 pub sections: Vec<DocSection>,
233 #[serde(skip_serializing_if = "Option::is_none")]
234 pub raw: Option<String>,
235 #[serde(skip_serializing_if = "Option::is_none")]
236 pub extra: Option<Value>,
237}
238
239#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
241pub struct DocParam {
242 pub name: String,
243 #[serde(skip_serializing_if = "Option::is_none")]
244 pub description: Option<String>,
245 #[serde(skip_serializing_if = "Option::is_none")]
246 pub type_ref: Option<TypeRef>,
247}
248
249#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
251pub struct DocTypeParam {
252 pub name: String,
253 #[serde(skip_serializing_if = "Option::is_none")]
254 pub description: Option<String>,
255}
256
257#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
259pub struct DocException {
260 #[serde(skip_serializing_if = "Option::is_none")]
261 pub type_ref: Option<TypeRef>,
262 #[serde(skip_serializing_if = "Option::is_none")]
263 pub description: Option<String>,
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
268pub struct DocExample {
269 #[serde(skip_serializing_if = "Option::is_none")]
270 pub lang: Option<String>,
271 #[serde(skip_serializing_if = "Option::is_none")]
272 pub code: Option<String>,
273 #[serde(skip_serializing_if = "Option::is_none")]
274 pub caption: Option<String>,
275}
276
277#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
279pub struct SeeAlso {
280 #[serde(skip_serializing_if = "Option::is_none")]
281 pub label: Option<String>,
282 pub target: String,
283 #[serde(skip_serializing_if = "Option::is_none")]
284 pub target_kind: Option<String>,
285}
286
287#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
289pub struct DocInherit {
290 #[serde(skip_serializing_if = "Option::is_none")]
291 pub cref: Option<String>,
292 #[serde(skip_serializing_if = "Option::is_none")]
293 pub path: Option<String>,
294}
295
296#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
298pub struct DocSection {
299 pub title: String,
300 pub body: String,
301}
302
303#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
305pub struct DocChunk {
306 #[serde(default, skip_deserializing, skip_serializing_if = "Option::is_none")]
307 pub id: Option<String>,
308 pub project_id: String,
309 #[serde(skip_serializing_if = "Option::is_none")]
310 pub ingest_id: Option<String>,
311 #[serde(skip_serializing_if = "Option::is_none")]
312 pub symbol_key: Option<String>,
313 #[serde(skip_serializing_if = "Option::is_none")]
314 pub doc_block_id: Option<String>,
315 pub chunk_index: u32,
316 pub text: String,
317 #[serde(skip_serializing_if = "Option::is_none")]
318 pub token_count: Option<u32>,
319 #[serde(skip_serializing_if = "Option::is_none")]
320 pub embedding: Option<Vec<f32>>,
321 #[serde(skip_serializing_if = "Option::is_none")]
322 pub extra: Option<Value>,
323}
324
325#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
327pub struct RelationRecord {
328 #[serde(default, skip_deserializing, skip_serializing_if = "Option::is_none")]
329 pub id: Option<String>,
330 #[serde(rename = "in")]
331 pub in_id: String,
332 #[serde(rename = "out")]
333 pub out_id: String,
334 pub project_id: String,
335 #[serde(skip_serializing_if = "Option::is_none")]
336 pub ingest_id: Option<String>,
337 #[serde(skip_serializing_if = "Option::is_none")]
338 pub kind: Option<String>,
339 #[serde(skip_serializing_if = "Option::is_none")]
340 pub extra: Option<Value>,
341}
342
343pub type ContainsEdge = RelationRecord;
344pub type MemberOfEdge = RelationRecord;
345pub type DocumentsEdge = RelationRecord;
346pub type ReferencesEdge = RelationRecord;
347pub type SeeAlsoEdge = RelationRecord;
348pub type InheritsEdge = RelationRecord;
349pub type ImplementsEdge = RelationRecord;
350pub type OverloadOfEdge = RelationRecord;
351pub type TypeOfEdge = RelationRecord;
352pub type ReturnsEdge = RelationRecord;
353pub type ParamTypeEdge = RelationRecord;
354pub type ObservedInEdge = RelationRecord;