1#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Attribution {
4 #[prost(message, optional, tag = "1")]
5 pub time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
6 #[prost(string, tag = "2")]
7 pub user_rid: ::prost::alloc::string::String,
8}
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct Drive {
11 #[prost(string, tag = "1")]
12 pub rid: ::prost::alloc::string::String,
13 #[prost(string, tag = "2")]
14 pub workspace_rid: ::prost::alloc::string::String,
15 #[prost(string, tag = "3")]
16 pub id: ::prost::alloc::string::String,
17 #[prost(enumeration = "DriveState", tag = "4")]
18 pub state: i32,
19 #[prost(message, optional, tag = "5")]
20 pub created: ::core::option::Option<Attribution>,
21 #[prost(enumeration = "DriveSource", tag = "6")]
22 pub source: i32,
23 #[prost(enumeration = "DriveMutability", tag = "7")]
24 pub content_mutability: i32,
25 #[prost(string, optional, tag = "8")]
26 pub description: ::core::option::Option<::prost::alloc::string::String>,
27}
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct VirtualDrive {
30 #[prost(string, tag = "1")]
31 pub drive_rid: ::prost::alloc::string::String,
32 #[prost(message, optional, tag = "2")]
33 pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
34 #[prost(message, optional, tag = "3")]
35 pub status: ::core::option::Option<VirtualDriveStatus>,
36}
37#[derive(Clone, PartialEq, ::prost::Message)]
38pub struct VirtualDriveDetails {
39 #[prost(string, tag = "1")]
40 pub drive_rid: ::prost::alloc::string::String,
41 #[prost(message, optional, tag = "2")]
42 pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
43}
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct VirtualDriveStatus {
46 #[prost(enumeration = "VirtualDriveState", tag = "1")]
47 pub state: i32,
48 #[prost(message, optional, tag = "2")]
49 pub last_successful_check_time: ::core::option::Option<
50 super::super::super::google::protobuf::Timestamp,
51 >,
52 #[prost(string, tag = "3")]
53 pub message: ::prost::alloc::string::String,
54}
55#[derive(Clone, PartialEq, ::prost::Message)]
56pub struct VirtualDriveConnectionDetails {
57 #[prost(oneof = "virtual_drive_connection_details::Details", tags = "1, 2, 3")]
58 pub details: ::core::option::Option<virtual_drive_connection_details::Details>,
59}
60pub mod virtual_drive_connection_details {
62 #[derive(Clone, PartialEq, ::prost::Oneof)]
63 pub enum Details {
64 #[prost(message, tag = "1")]
65 S3(super::S3VirtualDriveConnectionDetails),
66 #[prost(message, tag = "2")]
67 GoogleDrive(super::GoogleDriveVirtualDriveConnectionDetails),
68 #[prost(message, tag = "3")]
69 Gcs(super::GcsVirtualDriveConnectionDetails),
70 }
71}
72#[derive(Clone, PartialEq, ::prost::Message)]
73pub struct S3VirtualDriveConnectionDetails {
74 #[prost(string, tag = "1")]
75 pub bucket: ::prost::alloc::string::String,
76 #[prost(string, tag = "2")]
77 pub prefix: ::prost::alloc::string::String,
78 #[prost(string, tag = "3")]
79 pub credentials_secret_rid: ::prost::alloc::string::String,
80 #[prost(string, tag = "4")]
81 pub endpoint: ::prost::alloc::string::String,
82 #[prost(string, optional, tag = "5")]
83 pub region: ::core::option::Option<::prost::alloc::string::String>,
84 #[prost(message, optional, tag = "6")]
85 pub assume_role: ::core::option::Option<S3AssumeRoleCredentials>,
86}
87#[derive(Clone, PartialEq, ::prost::Message)]
88pub struct S3AssumeRoleCredentials {
89 #[prost(string, tag = "1")]
90 pub role_arn: ::prost::alloc::string::String,
91 #[prost(string, tag = "2")]
92 pub external_id: ::prost::alloc::string::String,
93}
94#[derive(Clone, PartialEq, ::prost::Message)]
95pub struct GoogleDriveVirtualDriveConnectionDetails {
96 #[prost(string, tag = "1")]
97 pub folder_id: ::prost::alloc::string::String,
98 #[prost(string, tag = "2")]
99 pub credentials_secret_rid: ::prost::alloc::string::String,
100}
101#[derive(Clone, PartialEq, ::prost::Message)]
102pub struct GcsVirtualDriveConnectionDetails {
103 #[prost(string, tag = "1")]
104 pub bucket: ::prost::alloc::string::String,
105 #[prost(string, tag = "2")]
106 pub prefix: ::prost::alloc::string::String,
107 #[prost(string, tag = "3")]
108 pub credentials_secret_rid: ::prost::alloc::string::String,
109}
110#[derive(Clone, PartialEq, ::prost::Message)]
111pub struct LogicalPath {
112 #[prost(string, tag = "1")]
113 pub path: ::prost::alloc::string::String,
114}
115#[derive(Clone, PartialEq, ::prost::Message)]
116pub struct LogicalFile {
117 #[prost(message, optional, tag = "1")]
118 pub identity: ::core::option::Option<LogicalFileIdentity>,
119 #[prost(message, optional, tag = "2")]
120 pub path: ::core::option::Option<LogicalPath>,
121 #[prost(enumeration = "FileState", tag = "3")]
122 pub state: i32,
123 #[prost(message, optional, tag = "4")]
124 pub created: ::core::option::Option<Attribution>,
125 #[prost(uint64, tag = "5")]
126 pub size_bytes: u64,
127 #[prost(message, optional, tag = "6")]
128 pub observed: ::core::option::Option<Attribution>,
129 #[prost(message, optional, tag = "7")]
130 pub current_revision: ::core::option::Option<FileRevisionRef>,
131 #[prost(enumeration = "DownloadAvailability", tag = "8")]
132 pub download_availability: i32,
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct LogicalFileIdentity {
136 #[prost(oneof = "logical_file_identity::Identity", tags = "1, 2")]
137 pub identity: ::core::option::Option<logical_file_identity::Identity>,
138}
139pub mod logical_file_identity {
141 #[derive(Clone, PartialEq, ::prost::Oneof)]
142 pub enum Identity {
143 #[prost(message, tag = "1")]
144 Managed(super::ManagedFileIdentity),
145 #[prost(message, tag = "2")]
146 Virtual(super::VirtualFileIdentity),
147 }
148}
149#[derive(Clone, PartialEq, ::prost::Message)]
150pub struct ManagedFileIdentity {
151 #[prost(string, tag = "1")]
152 pub file_rid: ::prost::alloc::string::String,
153}
154#[derive(Clone, PartialEq, ::prost::Message)]
155pub struct VirtualFileIdentity {
156 #[prost(oneof = "virtual_file_identity::Kind", tags = "1, 2, 3")]
157 pub kind: ::core::option::Option<virtual_file_identity::Kind>,
158}
159pub mod virtual_file_identity {
161 #[derive(Clone, PartialEq, ::prost::Oneof)]
162 pub enum Kind {
163 #[prost(message, tag = "1")]
164 S3(super::S3FileIdentity),
165 #[prost(message, tag = "2")]
166 GoogleDrive(super::GoogleDriveFileIdentity),
167 #[prost(message, tag = "3")]
168 Gcs(super::GcsFileIdentity),
169 }
170}
171#[derive(Clone, PartialEq, ::prost::Message)]
172pub struct S3FileIdentity {
173 #[prost(string, tag = "1")]
174 pub drive_rid: ::prost::alloc::string::String,
175 #[prost(string, tag = "2")]
176 pub path: ::prost::alloc::string::String,
177}
178#[derive(Clone, PartialEq, ::prost::Message)]
179pub struct GoogleDriveFileIdentity {
180 #[prost(string, tag = "1")]
181 pub drive_rid: ::prost::alloc::string::String,
182 #[prost(string, tag = "2")]
183 pub file_id: ::prost::alloc::string::String,
184}
185#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct GcsFileIdentity {
187 #[prost(string, tag = "1")]
188 pub drive_rid: ::prost::alloc::string::String,
189 #[prost(string, tag = "2")]
190 pub path: ::prost::alloc::string::String,
191}
192#[derive(Clone, PartialEq, ::prost::Message)]
193pub struct FileRevisionAction {
194 #[prost(oneof = "file_revision_action::Kind", tags = "1, 2, 3, 4")]
195 pub kind: ::core::option::Option<file_revision_action::Kind>,
196}
197pub mod file_revision_action {
199 #[derive(Clone, PartialEq, ::prost::Oneof)]
200 pub enum Kind {
201 #[prost(message, tag = "1")]
202 Put(super::FilePut),
203 #[prost(message, tag = "2")]
204 Moved(super::FileMoved),
205 #[prost(message, tag = "3")]
206 Removed(super::FileRemoved),
207 #[prost(message, tag = "4")]
208 Restored(super::FileRestored),
209 }
210}
211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
212pub struct FilePut {}
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct FileMoved {
215 #[prost(string, optional, tag = "1")]
216 pub source_revision_rid: ::core::option::Option<::prost::alloc::string::String>,
217}
218#[derive(Clone, PartialEq, ::prost::Message)]
219pub struct FileRemoved {
220 #[prost(string, optional, tag = "1")]
221 pub removed_revision_rid: ::core::option::Option<::prost::alloc::string::String>,
222}
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct FileRestored {
225 #[prost(string, optional, tag = "1")]
226 pub restored_from_revision_rid: ::core::option::Option<
227 ::prost::alloc::string::String,
228 >,
229}
230#[derive(Clone, PartialEq, ::prost::Message)]
231pub struct FileRevisionRef {
232 #[prost(oneof = "file_revision_ref::Reference", tags = "1, 2")]
233 pub reference: ::core::option::Option<file_revision_ref::Reference>,
234}
235pub mod file_revision_ref {
237 #[derive(Clone, PartialEq, ::prost::Oneof)]
238 pub enum Reference {
239 #[prost(message, tag = "1")]
240 Managed(super::ManagedFileRevisionRef),
241 #[prost(message, tag = "2")]
242 Virtual(super::VirtualFileRevisionRef),
243 }
244}
245#[derive(Clone, PartialEq, ::prost::Message)]
246pub struct ManagedFileRevisionRef {
247 #[prost(string, tag = "1")]
248 pub file_revision_rid: ::prost::alloc::string::String,
249}
250#[derive(Clone, PartialEq, ::prost::Message)]
251pub struct VirtualFileRevisionRef {
252 #[prost(oneof = "virtual_file_revision_ref::Kind", tags = "1, 2, 3")]
253 pub kind: ::core::option::Option<virtual_file_revision_ref::Kind>,
254}
255pub mod virtual_file_revision_ref {
257 #[derive(Clone, PartialEq, ::prost::Oneof)]
258 pub enum Kind {
259 #[prost(message, tag = "1")]
260 S3(super::S3FileRevisionRef),
261 #[prost(message, tag = "2")]
262 GoogleDrive(super::GoogleDriveFileRevisionRef),
263 #[prost(message, tag = "3")]
264 Gcs(super::GcsFileRevisionRef),
265 }
266}
267#[derive(Clone, PartialEq, ::prost::Message)]
268pub struct S3FileRevisionRef {
269 #[prost(string, tag = "1")]
270 pub drive_rid: ::prost::alloc::string::String,
271 #[prost(string, tag = "2")]
272 pub path: ::prost::alloc::string::String,
273 #[prost(string, tag = "3")]
274 pub etag: ::prost::alloc::string::String,
275}
276#[derive(Clone, PartialEq, ::prost::Message)]
277pub struct GoogleDriveFileRevisionRef {
278 #[prost(string, tag = "1")]
279 pub drive_rid: ::prost::alloc::string::String,
280 #[prost(string, tag = "2")]
281 pub file_id: ::prost::alloc::string::String,
282 #[prost(string, tag = "3")]
283 pub revision_id: ::prost::alloc::string::String,
284}
285#[derive(Clone, PartialEq, ::prost::Message)]
286pub struct GcsFileRevisionRef {
287 #[prost(string, tag = "1")]
288 pub drive_rid: ::prost::alloc::string::String,
289 #[prost(string, tag = "2")]
290 pub path: ::prost::alloc::string::String,
291 #[prost(string, tag = "3")]
292 pub generation: ::prost::alloc::string::String,
293}
294#[derive(Clone, PartialEq, ::prost::Message)]
295pub struct ManagedFileRevision {
296 #[prost(message, optional, tag = "9")]
297 pub r#ref: ::core::option::Option<FileRevisionRef>,
298 #[prost(message, optional, tag = "10")]
299 pub identity: ::core::option::Option<LogicalFileIdentity>,
300 #[deprecated]
301 #[prost(string, tag = "1")]
302 pub file_revision_rid: ::prost::alloc::string::String,
303 #[deprecated]
304 #[prost(string, tag = "2")]
305 pub file_rid: ::prost::alloc::string::String,
306 #[prost(message, optional, tag = "3")]
307 pub path: ::core::option::Option<LogicalPath>,
308 #[prost(uint64, tag = "4")]
309 pub size_bytes: u64,
310 #[prost(message, optional, tag = "5")]
311 pub created: ::core::option::Option<Attribution>,
312 #[prost(enumeration = "FileState", tag = "6")]
313 pub state: i32,
314 #[prost(enumeration = "DownloadAvailability", tag = "7")]
315 pub download_availability: i32,
316 #[prost(message, optional, tag = "8")]
317 pub action: ::core::option::Option<FileRevisionAction>,
318}
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct VirtualFileRevision {
321 #[prost(string, tag = "1")]
322 pub file_revision_rid: ::prost::alloc::string::String,
323 #[prost(message, optional, tag = "2")]
324 pub file_identity: ::core::option::Option<VirtualFileIdentity>,
325 #[prost(message, optional, tag = "3")]
326 pub path: ::core::option::Option<LogicalPath>,
327 #[prost(uint64, tag = "4")]
328 pub size_bytes: u64,
329 #[prost(message, optional, tag = "5")]
330 pub observed: ::core::option::Option<Attribution>,
331 #[prost(enumeration = "DownloadAvailability", tag = "6")]
332 pub download_availability: i32,
333}
334#[derive(Clone, PartialEq, ::prost::Message)]
335pub struct FileRevision {
336 #[prost(message, optional, tag = "9")]
337 pub r#ref: ::core::option::Option<FileRevisionRef>,
338 #[prost(message, optional, tag = "10")]
339 pub identity: ::core::option::Option<LogicalFileIdentity>,
340 #[prost(message, optional, tag = "3")]
341 pub path: ::core::option::Option<LogicalPath>,
342 #[prost(uint64, tag = "4")]
343 pub size_bytes: u64,
344 #[prost(message, optional, tag = "5")]
345 pub observed: ::core::option::Option<Attribution>,
346 #[prost(enumeration = "FileState", tag = "6")]
347 pub state: i32,
348 #[prost(enumeration = "DownloadAvailability", tag = "7")]
349 pub download_availability: i32,
350 #[prost(message, optional, tag = "8")]
351 pub action: ::core::option::Option<FileRevisionAction>,
352}
353#[derive(Clone, PartialEq, ::prost::Message)]
354pub struct Directory {
355 #[prost(message, optional, tag = "1")]
356 pub path: ::core::option::Option<LogicalPath>,
357}
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct FileEntry {
360 #[prost(oneof = "file_entry::Entry", tags = "1, 2")]
361 pub entry: ::core::option::Option<file_entry::Entry>,
362}
363pub mod file_entry {
365 #[derive(Clone, PartialEq, ::prost::Oneof)]
366 pub enum Entry {
367 #[prost(message, tag = "1")]
368 File(super::LogicalFile),
369 #[prost(message, tag = "2")]
370 Directory(super::Directory),
371 }
372}
373#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
374#[repr(i32)]
375pub enum DriveState {
376 Unspecified = 0,
377 Active = 1,
378 Archived = 2,
379}
380impl DriveState {
381 pub fn as_str_name(&self) -> &'static str {
386 match self {
387 Self::Unspecified => "DRIVE_STATE_UNSPECIFIED",
388 Self::Active => "DRIVE_STATE_ACTIVE",
389 Self::Archived => "DRIVE_STATE_ARCHIVED",
390 }
391 }
392 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
394 match value {
395 "DRIVE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
396 "DRIVE_STATE_ACTIVE" => Some(Self::Active),
397 "DRIVE_STATE_ARCHIVED" => Some(Self::Archived),
398 _ => None,
399 }
400 }
401}
402#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
403#[repr(i32)]
404pub enum DriveSource {
405 Unspecified = 0,
406 Nominal = 1,
407 S3 = 2,
408 GoogleDrive = 3,
409 Gcs = 4,
410}
411impl DriveSource {
412 pub fn as_str_name(&self) -> &'static str {
417 match self {
418 Self::Unspecified => "DRIVE_SOURCE_UNSPECIFIED",
419 Self::Nominal => "DRIVE_SOURCE_NOMINAL",
420 Self::S3 => "DRIVE_SOURCE_S3",
421 Self::GoogleDrive => "DRIVE_SOURCE_GOOGLE_DRIVE",
422 Self::Gcs => "DRIVE_SOURCE_GCS",
423 }
424 }
425 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
427 match value {
428 "DRIVE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
429 "DRIVE_SOURCE_NOMINAL" => Some(Self::Nominal),
430 "DRIVE_SOURCE_S3" => Some(Self::S3),
431 "DRIVE_SOURCE_GOOGLE_DRIVE" => Some(Self::GoogleDrive),
432 "DRIVE_SOURCE_GCS" => Some(Self::Gcs),
433 _ => None,
434 }
435 }
436}
437#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
438#[repr(i32)]
439pub enum DriveMutability {
440 Unspecified = 0,
441 Writable = 1,
442 ReadOnly = 2,
443}
444impl DriveMutability {
445 pub fn as_str_name(&self) -> &'static str {
450 match self {
451 Self::Unspecified => "DRIVE_MUTABILITY_UNSPECIFIED",
452 Self::Writable => "DRIVE_MUTABILITY_WRITABLE",
453 Self::ReadOnly => "DRIVE_MUTABILITY_READ_ONLY",
454 }
455 }
456 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
458 match value {
459 "DRIVE_MUTABILITY_UNSPECIFIED" => Some(Self::Unspecified),
460 "DRIVE_MUTABILITY_WRITABLE" => Some(Self::Writable),
461 "DRIVE_MUTABILITY_READ_ONLY" => Some(Self::ReadOnly),
462 _ => None,
463 }
464 }
465}
466#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
467#[repr(i32)]
468pub enum VirtualDriveState {
469 Unspecified = 0,
470 Active = 1,
471 AuthError = 2,
472 Unreachable = 3,
473 InvalidConfiguration = 4,
474}
475impl VirtualDriveState {
476 pub fn as_str_name(&self) -> &'static str {
481 match self {
482 Self::Unspecified => "VIRTUAL_DRIVE_STATE_UNSPECIFIED",
483 Self::Active => "VIRTUAL_DRIVE_STATE_ACTIVE",
484 Self::AuthError => "VIRTUAL_DRIVE_STATE_AUTH_ERROR",
485 Self::Unreachable => "VIRTUAL_DRIVE_STATE_UNREACHABLE",
486 Self::InvalidConfiguration => "VIRTUAL_DRIVE_STATE_INVALID_CONFIGURATION",
487 }
488 }
489 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
491 match value {
492 "VIRTUAL_DRIVE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
493 "VIRTUAL_DRIVE_STATE_ACTIVE" => Some(Self::Active),
494 "VIRTUAL_DRIVE_STATE_AUTH_ERROR" => Some(Self::AuthError),
495 "VIRTUAL_DRIVE_STATE_UNREACHABLE" => Some(Self::Unreachable),
496 "VIRTUAL_DRIVE_STATE_INVALID_CONFIGURATION" => {
497 Some(Self::InvalidConfiguration)
498 }
499 _ => None,
500 }
501 }
502}
503#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
504#[repr(i32)]
505pub enum FileState {
506 Unspecified = 0,
507 Active = 1,
508 Removed = 2,
509}
510impl FileState {
511 pub fn as_str_name(&self) -> &'static str {
516 match self {
517 Self::Unspecified => "FILE_STATE_UNSPECIFIED",
518 Self::Active => "FILE_STATE_ACTIVE",
519 Self::Removed => "FILE_STATE_REMOVED",
520 }
521 }
522 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
524 match value {
525 "FILE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
526 "FILE_STATE_ACTIVE" => Some(Self::Active),
527 "FILE_STATE_REMOVED" => Some(Self::Removed),
528 _ => None,
529 }
530 }
531}
532#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
533#[repr(i32)]
534pub enum DownloadAvailability {
535 Unspecified = 0,
536 Available = 1,
537 BytesReclaimed = 2,
538 NoContent = 3,
539}
540impl DownloadAvailability {
541 pub fn as_str_name(&self) -> &'static str {
546 match self {
547 Self::Unspecified => "DOWNLOAD_AVAILABILITY_UNSPECIFIED",
548 Self::Available => "DOWNLOAD_AVAILABILITY_AVAILABLE",
549 Self::BytesReclaimed => "DOWNLOAD_AVAILABILITY_BYTES_RECLAIMED",
550 Self::NoContent => "DOWNLOAD_AVAILABILITY_NO_CONTENT",
551 }
552 }
553 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
555 match value {
556 "DOWNLOAD_AVAILABILITY_UNSPECIFIED" => Some(Self::Unspecified),
557 "DOWNLOAD_AVAILABILITY_AVAILABLE" => Some(Self::Available),
558 "DOWNLOAD_AVAILABILITY_BYTES_RECLAIMED" => Some(Self::BytesReclaimed),
559 "DOWNLOAD_AVAILABILITY_NO_CONTENT" => Some(Self::NoContent),
560 _ => None,
561 }
562 }
563}
564#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
565#[repr(i32)]
566pub enum FileStoreCommonError {
567 Unspecified = 0,
568 DriveNotFound = 1,
569 FileNotFound = 2,
570 FileRevisionNotFound = 3,
571 PermissionDenied = 4,
572}
573impl FileStoreCommonError {
574 pub fn as_str_name(&self) -> &'static str {
579 match self {
580 Self::Unspecified => "FILE_STORE_COMMON_ERROR_UNSPECIFIED",
581 Self::DriveNotFound => "FILE_STORE_COMMON_ERROR_DRIVE_NOT_FOUND",
582 Self::FileNotFound => "FILE_STORE_COMMON_ERROR_FILE_NOT_FOUND",
583 Self::FileRevisionNotFound => {
584 "FILE_STORE_COMMON_ERROR_FILE_REVISION_NOT_FOUND"
585 }
586 Self::PermissionDenied => "FILE_STORE_COMMON_ERROR_PERMISSION_DENIED",
587 }
588 }
589 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
591 match value {
592 "FILE_STORE_COMMON_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
593 "FILE_STORE_COMMON_ERROR_DRIVE_NOT_FOUND" => Some(Self::DriveNotFound),
594 "FILE_STORE_COMMON_ERROR_FILE_NOT_FOUND" => Some(Self::FileNotFound),
595 "FILE_STORE_COMMON_ERROR_FILE_REVISION_NOT_FOUND" => {
596 Some(Self::FileRevisionNotFound)
597 }
598 "FILE_STORE_COMMON_ERROR_PERMISSION_DENIED" => Some(Self::PermissionDenied),
599 _ => None,
600 }
601 }
602}
603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
604#[repr(i32)]
605pub enum VirtualDriveUpstreamError {
606 Unspecified = 0,
607 CredentialsNotFound = 1,
608 CredentialsInvalid = 2,
609 CredentialsRejected = 3,
610 UpstreamUnavailable = 4,
611 UpstreamFileNotFound = 5,
612 InvalidUpstreamState = 6,
613}
614impl VirtualDriveUpstreamError {
615 pub fn as_str_name(&self) -> &'static str {
620 match self {
621 Self::Unspecified => "VIRTUAL_DRIVE_UPSTREAM_ERROR_UNSPECIFIED",
622 Self::CredentialsNotFound => {
623 "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_NOT_FOUND"
624 }
625 Self::CredentialsInvalid => {
626 "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_INVALID"
627 }
628 Self::CredentialsRejected => {
629 "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_REJECTED"
630 }
631 Self::UpstreamUnavailable => {
632 "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_UNAVAILABLE"
633 }
634 Self::UpstreamFileNotFound => {
635 "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_FILE_NOT_FOUND"
636 }
637 Self::InvalidUpstreamState => {
638 "VIRTUAL_DRIVE_UPSTREAM_ERROR_INVALID_UPSTREAM_STATE"
639 }
640 }
641 }
642 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
644 match value {
645 "VIRTUAL_DRIVE_UPSTREAM_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
646 "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_NOT_FOUND" => {
647 Some(Self::CredentialsNotFound)
648 }
649 "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_INVALID" => {
650 Some(Self::CredentialsInvalid)
651 }
652 "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_REJECTED" => {
653 Some(Self::CredentialsRejected)
654 }
655 "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_UNAVAILABLE" => {
656 Some(Self::UpstreamUnavailable)
657 }
658 "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_FILE_NOT_FOUND" => {
659 Some(Self::UpstreamFileNotFound)
660 }
661 "VIRTUAL_DRIVE_UPSTREAM_ERROR_INVALID_UPSTREAM_STATE" => {
662 Some(Self::InvalidUpstreamState)
663 }
664 _ => None,
665 }
666 }
667}
668#[derive(Clone, PartialEq, ::prost::Message)]
669pub struct CreateDriveRequest {
670 #[prost(string, tag = "1")]
671 pub workspace_rid: ::prost::alloc::string::String,
672 #[prost(string, tag = "2")]
673 pub id: ::prost::alloc::string::String,
674 #[prost(string, optional, tag = "3")]
675 pub description: ::core::option::Option<::prost::alloc::string::String>,
676}
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct CreateDriveResponse {
679 #[prost(message, optional, tag = "1")]
680 pub drive: ::core::option::Option<Drive>,
681}
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct CreateVirtualDriveRequest {
684 #[prost(string, tag = "1")]
685 pub workspace_rid: ::prost::alloc::string::String,
686 #[prost(string, tag = "2")]
687 pub id: ::prost::alloc::string::String,
688 #[prost(message, optional, tag = "3")]
689 pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
690 #[prost(string, optional, tag = "4")]
691 pub description: ::core::option::Option<::prost::alloc::string::String>,
692}
693#[derive(Clone, PartialEq, ::prost::Message)]
694pub struct CreateVirtualDriveResponse {
695 #[prost(message, optional, tag = "1")]
696 pub drive: ::core::option::Option<Drive>,
697 #[prost(message, optional, tag = "2")]
698 pub virtual_drive: ::core::option::Option<VirtualDrive>,
699}
700#[derive(Clone, PartialEq, ::prost::Message)]
701pub struct GetDriveRequest {
702 #[prost(string, tag = "1")]
703 pub drive_rid: ::prost::alloc::string::String,
704}
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct GetDriveResponse {
707 #[prost(message, optional, tag = "1")]
708 pub drive: ::core::option::Option<Drive>,
709}
710#[derive(Clone, PartialEq, ::prost::Message)]
711pub struct GetVirtualDriveDetailsRequest {
712 #[prost(string, tag = "1")]
713 pub drive_rid: ::prost::alloc::string::String,
714}
715#[derive(Clone, PartialEq, ::prost::Message)]
716pub struct GetVirtualDriveDetailsResponse {
717 #[prost(message, optional, tag = "1")]
718 pub drive: ::core::option::Option<Drive>,
719 #[prost(message, optional, tag = "2")]
720 pub virtual_drive_details: ::core::option::Option<VirtualDriveDetails>,
721}
722#[derive(Clone, PartialEq, ::prost::Message)]
723pub struct GetVirtualDriveStatusRequest {
724 #[prost(string, tag = "1")]
725 pub drive_rid: ::prost::alloc::string::String,
726}
727#[derive(Clone, PartialEq, ::prost::Message)]
728pub struct GetVirtualDriveStatusResponse {
729 #[prost(message, optional, tag = "1")]
730 pub status: ::core::option::Option<VirtualDriveStatus>,
731}
732#[derive(Clone, PartialEq, ::prost::Message)]
733pub struct GetDriveByIdRequest {
734 #[prost(string, tag = "1")]
735 pub workspace_rid: ::prost::alloc::string::String,
736 #[prost(string, tag = "2")]
737 pub id: ::prost::alloc::string::String,
738}
739#[derive(Clone, PartialEq, ::prost::Message)]
740pub struct GetDriveByIdResponse {
741 #[prost(message, optional, tag = "1")]
742 pub drive: ::core::option::Option<Drive>,
743}
744#[derive(Clone, PartialEq, ::prost::Message)]
745pub struct GetVirtualDriveDetailsByIdRequest {
746 #[prost(string, tag = "1")]
747 pub workspace_rid: ::prost::alloc::string::String,
748 #[prost(string, tag = "2")]
749 pub id: ::prost::alloc::string::String,
750}
751#[derive(Clone, PartialEq, ::prost::Message)]
752pub struct GetVirtualDriveDetailsByIdResponse {
753 #[prost(message, optional, tag = "1")]
754 pub drive: ::core::option::Option<Drive>,
755 #[prost(message, optional, tag = "2")]
756 pub virtual_drive_details: ::core::option::Option<VirtualDriveDetails>,
757}
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct GetVirtualDriveStatusByIdRequest {
760 #[prost(string, tag = "1")]
761 pub workspace_rid: ::prost::alloc::string::String,
762 #[prost(string, tag = "2")]
763 pub id: ::prost::alloc::string::String,
764}
765#[derive(Clone, PartialEq, ::prost::Message)]
766pub struct GetVirtualDriveStatusByIdResponse {
767 #[prost(message, optional, tag = "1")]
768 pub status: ::core::option::Option<VirtualDriveStatus>,
769}
770#[derive(Clone, PartialEq, ::prost::Message)]
771pub struct ListDrivesRequest {
772 #[prost(string, tag = "1")]
773 pub workspace_rid: ::prost::alloc::string::String,
774 #[prost(bool, tag = "2")]
775 pub include_archived: bool,
776 #[prost(int32, optional, tag = "3")]
777 pub page_size: ::core::option::Option<i32>,
778 #[prost(string, optional, tag = "4")]
779 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
780}
781#[derive(Clone, PartialEq, ::prost::Message)]
782pub struct ListDrivesResponse {
783 #[prost(message, repeated, tag = "1")]
784 pub drives: ::prost::alloc::vec::Vec<Drive>,
785 #[prost(string, optional, tag = "2")]
786 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
787}
788#[derive(Clone, PartialEq, ::prost::Message)]
789pub struct UpdateVirtualDriveRequest {
790 #[prost(string, tag = "1")]
791 pub drive_rid: ::prost::alloc::string::String,
792 #[prost(message, optional, tag = "2")]
793 pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
794}
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct UpdateVirtualDriveResponse {
797 #[prost(message, optional, tag = "1")]
798 pub drive: ::core::option::Option<Drive>,
799 #[prost(message, optional, tag = "2")]
800 pub virtual_drive: ::core::option::Option<VirtualDrive>,
801}
802#[derive(Clone, PartialEq, ::prost::Message)]
803pub struct UpdateDriveDetailsRequest {
804 #[prost(string, tag = "1")]
805 pub drive_rid: ::prost::alloc::string::String,
806 #[prost(string, optional, tag = "2")]
807 pub id: ::core::option::Option<::prost::alloc::string::String>,
808 #[prost(string, optional, tag = "3")]
809 pub description: ::core::option::Option<::prost::alloc::string::String>,
810}
811#[derive(Clone, PartialEq, ::prost::Message)]
812pub struct UpdateDriveDetailsResponse {
813 #[prost(message, optional, tag = "1")]
814 pub drive: ::core::option::Option<Drive>,
815}
816#[derive(Clone, PartialEq, ::prost::Message)]
817pub struct ArchiveDriveRequest {
818 #[prost(string, tag = "1")]
819 pub drive_rid: ::prost::alloc::string::String,
820}
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct ArchiveDriveResponse {
823 #[prost(message, optional, tag = "1")]
824 pub drive: ::core::option::Option<Drive>,
825}
826#[derive(Clone, PartialEq, ::prost::Message)]
827pub struct UnarchiveDriveRequest {
828 #[prost(string, tag = "1")]
829 pub drive_rid: ::prost::alloc::string::String,
830}
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct UnarchiveDriveResponse {
833 #[prost(message, optional, tag = "1")]
834 pub drive: ::core::option::Option<Drive>,
835}
836#[derive(Clone, PartialEq, ::prost::Message)]
837pub struct NotifyVirtualDriveFilesRequest {
838 #[prost(string, tag = "1")]
839 pub drive_rid: ::prost::alloc::string::String,
840 #[prost(message, repeated, tag = "2")]
841 pub objects: ::prost::alloc::vec::Vec<NotifiedObject>,
842}
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct NotifiedObject {
845 #[prost(string, tag = "1")]
846 pub bucket: ::prost::alloc::string::String,
847 #[prost(string, tag = "2")]
848 pub key: ::prost::alloc::string::String,
849 #[prost(string, tag = "3")]
850 pub etag: ::prost::alloc::string::String,
851}
852#[derive(Clone, PartialEq, ::prost::Message)]
853pub struct NotifyVirtualDriveFilesResponse {
854 #[prost(int32, tag = "1")]
855 pub enqueued: i32,
856 #[prost(int32, tag = "2")]
857 pub skipped: i32,
858 #[prost(int32, tag = "3")]
859 pub malformed: i32,
860 #[prost(message, repeated, tag = "4")]
861 pub skipped_by_reason: ::prost::alloc::vec::Vec<SkippedCount>,
862}
863#[derive(Clone, Copy, PartialEq, ::prost::Message)]
864pub struct SkippedCount {
865 #[prost(enumeration = "NotifySkipReason", tag = "1")]
866 pub reason: i32,
867 #[prost(int32, tag = "2")]
868 pub count: i32,
869}
870#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
871#[repr(i32)]
872pub enum NotifySkipReason {
873 Unspecified = 0,
874 WrongBucket = 1,
875 OutsidePrefix = 2,
876 FolderMarker = 3,
877 InvalidPath = 4,
878 NotFound = 5,
879 Unreadable = 6,
880}
881impl NotifySkipReason {
882 pub fn as_str_name(&self) -> &'static str {
887 match self {
888 Self::Unspecified => "NOTIFY_SKIP_REASON_UNSPECIFIED",
889 Self::WrongBucket => "NOTIFY_SKIP_REASON_WRONG_BUCKET",
890 Self::OutsidePrefix => "NOTIFY_SKIP_REASON_OUTSIDE_PREFIX",
891 Self::FolderMarker => "NOTIFY_SKIP_REASON_FOLDER_MARKER",
892 Self::InvalidPath => "NOTIFY_SKIP_REASON_INVALID_PATH",
893 Self::NotFound => "NOTIFY_SKIP_REASON_NOT_FOUND",
894 Self::Unreadable => "NOTIFY_SKIP_REASON_UNREADABLE",
895 }
896 }
897 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
899 match value {
900 "NOTIFY_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
901 "NOTIFY_SKIP_REASON_WRONG_BUCKET" => Some(Self::WrongBucket),
902 "NOTIFY_SKIP_REASON_OUTSIDE_PREFIX" => Some(Self::OutsidePrefix),
903 "NOTIFY_SKIP_REASON_FOLDER_MARKER" => Some(Self::FolderMarker),
904 "NOTIFY_SKIP_REASON_INVALID_PATH" => Some(Self::InvalidPath),
905 "NOTIFY_SKIP_REASON_NOT_FOUND" => Some(Self::NotFound),
906 "NOTIFY_SKIP_REASON_UNREADABLE" => Some(Self::Unreadable),
907 _ => None,
908 }
909 }
910}
911#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
912#[repr(i32)]
913pub enum DriveAdminError {
914 Unspecified = 0,
915 DriveIdAlreadyExists = 1,
916 VirtualDriveNotFound = 2,
917 InvalidVirtualDriveConfiguration = 3,
918}
919impl DriveAdminError {
920 pub fn as_str_name(&self) -> &'static str {
925 match self {
926 Self::Unspecified => "DRIVE_ADMIN_ERROR_UNSPECIFIED",
927 Self::DriveIdAlreadyExists => "DRIVE_ADMIN_ERROR_DRIVE_ID_ALREADY_EXISTS",
928 Self::VirtualDriveNotFound => "DRIVE_ADMIN_ERROR_VIRTUAL_DRIVE_NOT_FOUND",
929 Self::InvalidVirtualDriveConfiguration => {
930 "DRIVE_ADMIN_ERROR_INVALID_VIRTUAL_DRIVE_CONFIGURATION"
931 }
932 }
933 }
934 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
936 match value {
937 "DRIVE_ADMIN_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
938 "DRIVE_ADMIN_ERROR_DRIVE_ID_ALREADY_EXISTS" => {
939 Some(Self::DriveIdAlreadyExists)
940 }
941 "DRIVE_ADMIN_ERROR_VIRTUAL_DRIVE_NOT_FOUND" => {
942 Some(Self::VirtualDriveNotFound)
943 }
944 "DRIVE_ADMIN_ERROR_INVALID_VIRTUAL_DRIVE_CONFIGURATION" => {
945 Some(Self::InvalidVirtualDriveConfiguration)
946 }
947 _ => None,
948 }
949 }
950}
951pub mod drives_service_client {
953 #![allow(
954 unused_variables,
955 dead_code,
956 missing_docs,
957 clippy::wildcard_imports,
958 clippy::let_unit_value,
959 )]
960 use tonic::codegen::*;
961 use tonic::codegen::http::Uri;
962 #[derive(Debug, Clone)]
963 pub struct DrivesServiceClient<T> {
964 inner: tonic::client::Grpc<T>,
965 }
966 impl DrivesServiceClient<tonic::transport::Channel> {
967 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
969 where
970 D: TryInto<tonic::transport::Endpoint>,
971 D::Error: Into<StdError>,
972 {
973 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
974 Ok(Self::new(conn))
975 }
976 }
977 impl<T> DrivesServiceClient<T>
978 where
979 T: tonic::client::GrpcService<tonic::body::Body>,
980 T::Error: Into<StdError>,
981 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
982 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
983 {
984 pub fn new(inner: T) -> Self {
985 let inner = tonic::client::Grpc::new(inner);
986 Self { inner }
987 }
988 pub fn with_origin(inner: T, origin: Uri) -> Self {
989 let inner = tonic::client::Grpc::with_origin(inner, origin);
990 Self { inner }
991 }
992 pub fn with_interceptor<F>(
993 inner: T,
994 interceptor: F,
995 ) -> DrivesServiceClient<InterceptedService<T, F>>
996 where
997 F: tonic::service::Interceptor,
998 T::ResponseBody: Default,
999 T: tonic::codegen::Service<
1000 http::Request<tonic::body::Body>,
1001 Response = http::Response<
1002 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1003 >,
1004 >,
1005 <T as tonic::codegen::Service<
1006 http::Request<tonic::body::Body>,
1007 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1008 {
1009 DrivesServiceClient::new(InterceptedService::new(inner, interceptor))
1010 }
1011 #[must_use]
1016 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1017 self.inner = self.inner.send_compressed(encoding);
1018 self
1019 }
1020 #[must_use]
1022 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1023 self.inner = self.inner.accept_compressed(encoding);
1024 self
1025 }
1026 #[must_use]
1030 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1031 self.inner = self.inner.max_decoding_message_size(limit);
1032 self
1033 }
1034 #[must_use]
1038 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1039 self.inner = self.inner.max_encoding_message_size(limit);
1040 self
1041 }
1042 pub async fn create_drive(
1043 &mut self,
1044 request: impl tonic::IntoRequest<super::CreateDriveRequest>,
1045 ) -> std::result::Result<
1046 tonic::Response<super::CreateDriveResponse>,
1047 tonic::Status,
1048 > {
1049 self.inner
1050 .ready()
1051 .await
1052 .map_err(|e| {
1053 tonic::Status::unknown(
1054 format!("Service was not ready: {}", e.into()),
1055 )
1056 })?;
1057 let codec = tonic::codec::ProstCodec::default();
1058 let path = http::uri::PathAndQuery::from_static(
1059 "/nominal.file_store.v1.DrivesService/CreateDrive",
1060 );
1061 let mut req = request.into_request();
1062 req.extensions_mut()
1063 .insert(
1064 GrpcMethod::new("nominal.file_store.v1.DrivesService", "CreateDrive"),
1065 );
1066 self.inner.unary(req, path, codec).await
1067 }
1068 pub async fn create_virtual_drive(
1069 &mut self,
1070 request: impl tonic::IntoRequest<super::CreateVirtualDriveRequest>,
1071 ) -> std::result::Result<
1072 tonic::Response<super::CreateVirtualDriveResponse>,
1073 tonic::Status,
1074 > {
1075 self.inner
1076 .ready()
1077 .await
1078 .map_err(|e| {
1079 tonic::Status::unknown(
1080 format!("Service was not ready: {}", e.into()),
1081 )
1082 })?;
1083 let codec = tonic::codec::ProstCodec::default();
1084 let path = http::uri::PathAndQuery::from_static(
1085 "/nominal.file_store.v1.DrivesService/CreateVirtualDrive",
1086 );
1087 let mut req = request.into_request();
1088 req.extensions_mut()
1089 .insert(
1090 GrpcMethod::new(
1091 "nominal.file_store.v1.DrivesService",
1092 "CreateVirtualDrive",
1093 ),
1094 );
1095 self.inner.unary(req, path, codec).await
1096 }
1097 pub async fn get_drive(
1098 &mut self,
1099 request: impl tonic::IntoRequest<super::GetDriveRequest>,
1100 ) -> std::result::Result<
1101 tonic::Response<super::GetDriveResponse>,
1102 tonic::Status,
1103 > {
1104 self.inner
1105 .ready()
1106 .await
1107 .map_err(|e| {
1108 tonic::Status::unknown(
1109 format!("Service was not ready: {}", e.into()),
1110 )
1111 })?;
1112 let codec = tonic::codec::ProstCodec::default();
1113 let path = http::uri::PathAndQuery::from_static(
1114 "/nominal.file_store.v1.DrivesService/GetDrive",
1115 );
1116 let mut req = request.into_request();
1117 req.extensions_mut()
1118 .insert(
1119 GrpcMethod::new("nominal.file_store.v1.DrivesService", "GetDrive"),
1120 );
1121 self.inner.unary(req, path, codec).await
1122 }
1123 pub async fn get_virtual_drive_details(
1124 &mut self,
1125 request: impl tonic::IntoRequest<super::GetVirtualDriveDetailsRequest>,
1126 ) -> std::result::Result<
1127 tonic::Response<super::GetVirtualDriveDetailsResponse>,
1128 tonic::Status,
1129 > {
1130 self.inner
1131 .ready()
1132 .await
1133 .map_err(|e| {
1134 tonic::Status::unknown(
1135 format!("Service was not ready: {}", e.into()),
1136 )
1137 })?;
1138 let codec = tonic::codec::ProstCodec::default();
1139 let path = http::uri::PathAndQuery::from_static(
1140 "/nominal.file_store.v1.DrivesService/GetVirtualDriveDetails",
1141 );
1142 let mut req = request.into_request();
1143 req.extensions_mut()
1144 .insert(
1145 GrpcMethod::new(
1146 "nominal.file_store.v1.DrivesService",
1147 "GetVirtualDriveDetails",
1148 ),
1149 );
1150 self.inner.unary(req, path, codec).await
1151 }
1152 pub async fn get_virtual_drive_status(
1153 &mut self,
1154 request: impl tonic::IntoRequest<super::GetVirtualDriveStatusRequest>,
1155 ) -> std::result::Result<
1156 tonic::Response<super::GetVirtualDriveStatusResponse>,
1157 tonic::Status,
1158 > {
1159 self.inner
1160 .ready()
1161 .await
1162 .map_err(|e| {
1163 tonic::Status::unknown(
1164 format!("Service was not ready: {}", e.into()),
1165 )
1166 })?;
1167 let codec = tonic::codec::ProstCodec::default();
1168 let path = http::uri::PathAndQuery::from_static(
1169 "/nominal.file_store.v1.DrivesService/GetVirtualDriveStatus",
1170 );
1171 let mut req = request.into_request();
1172 req.extensions_mut()
1173 .insert(
1174 GrpcMethod::new(
1175 "nominal.file_store.v1.DrivesService",
1176 "GetVirtualDriveStatus",
1177 ),
1178 );
1179 self.inner.unary(req, path, codec).await
1180 }
1181 pub async fn get_drive_by_id(
1182 &mut self,
1183 request: impl tonic::IntoRequest<super::GetDriveByIdRequest>,
1184 ) -> std::result::Result<
1185 tonic::Response<super::GetDriveByIdResponse>,
1186 tonic::Status,
1187 > {
1188 self.inner
1189 .ready()
1190 .await
1191 .map_err(|e| {
1192 tonic::Status::unknown(
1193 format!("Service was not ready: {}", e.into()),
1194 )
1195 })?;
1196 let codec = tonic::codec::ProstCodec::default();
1197 let path = http::uri::PathAndQuery::from_static(
1198 "/nominal.file_store.v1.DrivesService/GetDriveById",
1199 );
1200 let mut req = request.into_request();
1201 req.extensions_mut()
1202 .insert(
1203 GrpcMethod::new(
1204 "nominal.file_store.v1.DrivesService",
1205 "GetDriveById",
1206 ),
1207 );
1208 self.inner.unary(req, path, codec).await
1209 }
1210 pub async fn get_virtual_drive_details_by_id(
1211 &mut self,
1212 request: impl tonic::IntoRequest<super::GetVirtualDriveDetailsByIdRequest>,
1213 ) -> std::result::Result<
1214 tonic::Response<super::GetVirtualDriveDetailsByIdResponse>,
1215 tonic::Status,
1216 > {
1217 self.inner
1218 .ready()
1219 .await
1220 .map_err(|e| {
1221 tonic::Status::unknown(
1222 format!("Service was not ready: {}", e.into()),
1223 )
1224 })?;
1225 let codec = tonic::codec::ProstCodec::default();
1226 let path = http::uri::PathAndQuery::from_static(
1227 "/nominal.file_store.v1.DrivesService/GetVirtualDriveDetailsById",
1228 );
1229 let mut req = request.into_request();
1230 req.extensions_mut()
1231 .insert(
1232 GrpcMethod::new(
1233 "nominal.file_store.v1.DrivesService",
1234 "GetVirtualDriveDetailsById",
1235 ),
1236 );
1237 self.inner.unary(req, path, codec).await
1238 }
1239 pub async fn get_virtual_drive_status_by_id(
1240 &mut self,
1241 request: impl tonic::IntoRequest<super::GetVirtualDriveStatusByIdRequest>,
1242 ) -> std::result::Result<
1243 tonic::Response<super::GetVirtualDriveStatusByIdResponse>,
1244 tonic::Status,
1245 > {
1246 self.inner
1247 .ready()
1248 .await
1249 .map_err(|e| {
1250 tonic::Status::unknown(
1251 format!("Service was not ready: {}", e.into()),
1252 )
1253 })?;
1254 let codec = tonic::codec::ProstCodec::default();
1255 let path = http::uri::PathAndQuery::from_static(
1256 "/nominal.file_store.v1.DrivesService/GetVirtualDriveStatusById",
1257 );
1258 let mut req = request.into_request();
1259 req.extensions_mut()
1260 .insert(
1261 GrpcMethod::new(
1262 "nominal.file_store.v1.DrivesService",
1263 "GetVirtualDriveStatusById",
1264 ),
1265 );
1266 self.inner.unary(req, path, codec).await
1267 }
1268 pub async fn list_drives(
1269 &mut self,
1270 request: impl tonic::IntoRequest<super::ListDrivesRequest>,
1271 ) -> std::result::Result<
1272 tonic::Response<super::ListDrivesResponse>,
1273 tonic::Status,
1274 > {
1275 self.inner
1276 .ready()
1277 .await
1278 .map_err(|e| {
1279 tonic::Status::unknown(
1280 format!("Service was not ready: {}", e.into()),
1281 )
1282 })?;
1283 let codec = tonic::codec::ProstCodec::default();
1284 let path = http::uri::PathAndQuery::from_static(
1285 "/nominal.file_store.v1.DrivesService/ListDrives",
1286 );
1287 let mut req = request.into_request();
1288 req.extensions_mut()
1289 .insert(
1290 GrpcMethod::new("nominal.file_store.v1.DrivesService", "ListDrives"),
1291 );
1292 self.inner.unary(req, path, codec).await
1293 }
1294 pub async fn update_virtual_drive(
1295 &mut self,
1296 request: impl tonic::IntoRequest<super::UpdateVirtualDriveRequest>,
1297 ) -> std::result::Result<
1298 tonic::Response<super::UpdateVirtualDriveResponse>,
1299 tonic::Status,
1300 > {
1301 self.inner
1302 .ready()
1303 .await
1304 .map_err(|e| {
1305 tonic::Status::unknown(
1306 format!("Service was not ready: {}", e.into()),
1307 )
1308 })?;
1309 let codec = tonic::codec::ProstCodec::default();
1310 let path = http::uri::PathAndQuery::from_static(
1311 "/nominal.file_store.v1.DrivesService/UpdateVirtualDrive",
1312 );
1313 let mut req = request.into_request();
1314 req.extensions_mut()
1315 .insert(
1316 GrpcMethod::new(
1317 "nominal.file_store.v1.DrivesService",
1318 "UpdateVirtualDrive",
1319 ),
1320 );
1321 self.inner.unary(req, path, codec).await
1322 }
1323 pub async fn update_drive_details(
1324 &mut self,
1325 request: impl tonic::IntoRequest<super::UpdateDriveDetailsRequest>,
1326 ) -> std::result::Result<
1327 tonic::Response<super::UpdateDriveDetailsResponse>,
1328 tonic::Status,
1329 > {
1330 self.inner
1331 .ready()
1332 .await
1333 .map_err(|e| {
1334 tonic::Status::unknown(
1335 format!("Service was not ready: {}", e.into()),
1336 )
1337 })?;
1338 let codec = tonic::codec::ProstCodec::default();
1339 let path = http::uri::PathAndQuery::from_static(
1340 "/nominal.file_store.v1.DrivesService/UpdateDriveDetails",
1341 );
1342 let mut req = request.into_request();
1343 req.extensions_mut()
1344 .insert(
1345 GrpcMethod::new(
1346 "nominal.file_store.v1.DrivesService",
1347 "UpdateDriveDetails",
1348 ),
1349 );
1350 self.inner.unary(req, path, codec).await
1351 }
1352 pub async fn archive_drive(
1353 &mut self,
1354 request: impl tonic::IntoRequest<super::ArchiveDriveRequest>,
1355 ) -> std::result::Result<
1356 tonic::Response<super::ArchiveDriveResponse>,
1357 tonic::Status,
1358 > {
1359 self.inner
1360 .ready()
1361 .await
1362 .map_err(|e| {
1363 tonic::Status::unknown(
1364 format!("Service was not ready: {}", e.into()),
1365 )
1366 })?;
1367 let codec = tonic::codec::ProstCodec::default();
1368 let path = http::uri::PathAndQuery::from_static(
1369 "/nominal.file_store.v1.DrivesService/ArchiveDrive",
1370 );
1371 let mut req = request.into_request();
1372 req.extensions_mut()
1373 .insert(
1374 GrpcMethod::new(
1375 "nominal.file_store.v1.DrivesService",
1376 "ArchiveDrive",
1377 ),
1378 );
1379 self.inner.unary(req, path, codec).await
1380 }
1381 pub async fn unarchive_drive(
1382 &mut self,
1383 request: impl tonic::IntoRequest<super::UnarchiveDriveRequest>,
1384 ) -> std::result::Result<
1385 tonic::Response<super::UnarchiveDriveResponse>,
1386 tonic::Status,
1387 > {
1388 self.inner
1389 .ready()
1390 .await
1391 .map_err(|e| {
1392 tonic::Status::unknown(
1393 format!("Service was not ready: {}", e.into()),
1394 )
1395 })?;
1396 let codec = tonic::codec::ProstCodec::default();
1397 let path = http::uri::PathAndQuery::from_static(
1398 "/nominal.file_store.v1.DrivesService/UnarchiveDrive",
1399 );
1400 let mut req = request.into_request();
1401 req.extensions_mut()
1402 .insert(
1403 GrpcMethod::new(
1404 "nominal.file_store.v1.DrivesService",
1405 "UnarchiveDrive",
1406 ),
1407 );
1408 self.inner.unary(req, path, codec).await
1409 }
1410 pub async fn notify_virtual_drive_files(
1411 &mut self,
1412 request: impl tonic::IntoRequest<super::NotifyVirtualDriveFilesRequest>,
1413 ) -> std::result::Result<
1414 tonic::Response<super::NotifyVirtualDriveFilesResponse>,
1415 tonic::Status,
1416 > {
1417 self.inner
1418 .ready()
1419 .await
1420 .map_err(|e| {
1421 tonic::Status::unknown(
1422 format!("Service was not ready: {}", e.into()),
1423 )
1424 })?;
1425 let codec = tonic::codec::ProstCodec::default();
1426 let path = http::uri::PathAndQuery::from_static(
1427 "/nominal.file_store.v1.DrivesService/NotifyVirtualDriveFiles",
1428 );
1429 let mut req = request.into_request();
1430 req.extensions_mut()
1431 .insert(
1432 GrpcMethod::new(
1433 "nominal.file_store.v1.DrivesService",
1434 "NotifyVirtualDriveFiles",
1435 ),
1436 );
1437 self.inner.unary(req, path, codec).await
1438 }
1439 }
1440}
1441#[derive(Clone, PartialEq, ::prost::Message)]
1442pub struct GetFileRevisionTextDiffPreviewRequest {
1443 #[prost(string, optional, tag = "1")]
1444 pub from_revision_rid: ::core::option::Option<::prost::alloc::string::String>,
1445 #[prost(string, tag = "2")]
1446 pub to_revision_rid: ::prost::alloc::string::String,
1447 #[prost(int32, optional, tag = "3")]
1448 pub page_size: ::core::option::Option<i32>,
1449 #[prost(string, optional, tag = "4")]
1450 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1451}
1452#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct GetFileRevisionTextDiffPreviewResponse {
1454 #[prost(message, repeated, tag = "1")]
1455 pub changes: ::prost::alloc::vec::Vec<DiffChange>,
1456 #[prost(string, optional, tag = "2")]
1457 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1458 #[prost(uint32, tag = "3")]
1459 pub total_change_count: u32,
1460 #[prost(uint32, tag = "4")]
1461 pub total_added_lines: u32,
1462 #[prost(uint32, tag = "5")]
1463 pub total_removed_lines: u32,
1464 #[prost(string, tag = "6")]
1465 pub from_revision_rid: ::prost::alloc::string::String,
1466}
1467#[derive(Clone, PartialEq, ::prost::Message)]
1468pub struct DiffChange {
1469 #[prost(message, repeated, tag = "1")]
1470 pub context_before: ::prost::alloc::vec::Vec<ContextLine>,
1471 #[prost(message, repeated, tag = "2")]
1472 pub removed: ::prost::alloc::vec::Vec<RemovedLine>,
1473 #[prost(message, repeated, tag = "3")]
1474 pub added: ::prost::alloc::vec::Vec<AddedLine>,
1475 #[prost(message, repeated, tag = "4")]
1476 pub context_after: ::prost::alloc::vec::Vec<ContextLine>,
1477}
1478#[derive(Clone, PartialEq, ::prost::Message)]
1479pub struct ContextLine {
1480 #[prost(uint32, tag = "1")]
1481 pub from_line: u32,
1482 #[prost(uint32, tag = "2")]
1483 pub to_line: u32,
1484 #[prost(string, tag = "3")]
1485 pub text: ::prost::alloc::string::String,
1486 #[prost(bool, tag = "4")]
1487 pub text_truncated: bool,
1488}
1489#[derive(Clone, PartialEq, ::prost::Message)]
1490pub struct RemovedLine {
1491 #[prost(uint32, tag = "1")]
1492 pub from_line: u32,
1493 #[prost(string, tag = "2")]
1494 pub text: ::prost::alloc::string::String,
1495 #[prost(bool, tag = "3")]
1496 pub text_truncated: bool,
1497}
1498#[derive(Clone, PartialEq, ::prost::Message)]
1499pub struct AddedLine {
1500 #[prost(uint32, tag = "1")]
1501 pub to_line: u32,
1502 #[prost(string, tag = "2")]
1503 pub text: ::prost::alloc::string::String,
1504 #[prost(bool, tag = "3")]
1505 pub text_truncated: bool,
1506}
1507#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1508#[repr(i32)]
1509pub enum TextDiffError {
1510 Unspecified = 0,
1511 RevisionContentNotText = 1,
1512 RevisionTooLarge = 2,
1513 PageTokenStale = 3,
1514 NoPrecedingRevision = 4,
1515}
1516impl TextDiffError {
1517 pub fn as_str_name(&self) -> &'static str {
1522 match self {
1523 Self::Unspecified => "TEXT_DIFF_ERROR_UNSPECIFIED",
1524 Self::RevisionContentNotText => "TEXT_DIFF_ERROR_REVISION_CONTENT_NOT_TEXT",
1525 Self::RevisionTooLarge => "TEXT_DIFF_ERROR_REVISION_TOO_LARGE",
1526 Self::PageTokenStale => "TEXT_DIFF_ERROR_PAGE_TOKEN_STALE",
1527 Self::NoPrecedingRevision => "TEXT_DIFF_ERROR_NO_PRECEDING_REVISION",
1528 }
1529 }
1530 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1532 match value {
1533 "TEXT_DIFF_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1534 "TEXT_DIFF_ERROR_REVISION_CONTENT_NOT_TEXT" => {
1535 Some(Self::RevisionContentNotText)
1536 }
1537 "TEXT_DIFF_ERROR_REVISION_TOO_LARGE" => Some(Self::RevisionTooLarge),
1538 "TEXT_DIFF_ERROR_PAGE_TOKEN_STALE" => Some(Self::PageTokenStale),
1539 "TEXT_DIFF_ERROR_NO_PRECEDING_REVISION" => Some(Self::NoPrecedingRevision),
1540 _ => None,
1541 }
1542 }
1543}
1544pub mod file_content_service_client {
1546 #![allow(
1547 unused_variables,
1548 dead_code,
1549 missing_docs,
1550 clippy::wildcard_imports,
1551 clippy::let_unit_value,
1552 )]
1553 use tonic::codegen::*;
1554 use tonic::codegen::http::Uri;
1555 #[derive(Debug, Clone)]
1556 pub struct FileContentServiceClient<T> {
1557 inner: tonic::client::Grpc<T>,
1558 }
1559 impl FileContentServiceClient<tonic::transport::Channel> {
1560 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1562 where
1563 D: TryInto<tonic::transport::Endpoint>,
1564 D::Error: Into<StdError>,
1565 {
1566 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1567 Ok(Self::new(conn))
1568 }
1569 }
1570 impl<T> FileContentServiceClient<T>
1571 where
1572 T: tonic::client::GrpcService<tonic::body::Body>,
1573 T::Error: Into<StdError>,
1574 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1575 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1576 {
1577 pub fn new(inner: T) -> Self {
1578 let inner = tonic::client::Grpc::new(inner);
1579 Self { inner }
1580 }
1581 pub fn with_origin(inner: T, origin: Uri) -> Self {
1582 let inner = tonic::client::Grpc::with_origin(inner, origin);
1583 Self { inner }
1584 }
1585 pub fn with_interceptor<F>(
1586 inner: T,
1587 interceptor: F,
1588 ) -> FileContentServiceClient<InterceptedService<T, F>>
1589 where
1590 F: tonic::service::Interceptor,
1591 T::ResponseBody: Default,
1592 T: tonic::codegen::Service<
1593 http::Request<tonic::body::Body>,
1594 Response = http::Response<
1595 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1596 >,
1597 >,
1598 <T as tonic::codegen::Service<
1599 http::Request<tonic::body::Body>,
1600 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1601 {
1602 FileContentServiceClient::new(InterceptedService::new(inner, interceptor))
1603 }
1604 #[must_use]
1609 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1610 self.inner = self.inner.send_compressed(encoding);
1611 self
1612 }
1613 #[must_use]
1615 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1616 self.inner = self.inner.accept_compressed(encoding);
1617 self
1618 }
1619 #[must_use]
1623 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1624 self.inner = self.inner.max_decoding_message_size(limit);
1625 self
1626 }
1627 #[must_use]
1631 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1632 self.inner = self.inner.max_encoding_message_size(limit);
1633 self
1634 }
1635 pub async fn get_file_revision_text_diff_preview(
1636 &mut self,
1637 request: impl tonic::IntoRequest<
1638 super::GetFileRevisionTextDiffPreviewRequest,
1639 >,
1640 ) -> std::result::Result<
1641 tonic::Response<super::GetFileRevisionTextDiffPreviewResponse>,
1642 tonic::Status,
1643 > {
1644 self.inner
1645 .ready()
1646 .await
1647 .map_err(|e| {
1648 tonic::Status::unknown(
1649 format!("Service was not ready: {}", e.into()),
1650 )
1651 })?;
1652 let codec = tonic::codec::ProstCodec::default();
1653 let path = http::uri::PathAndQuery::from_static(
1654 "/nominal.file_store.v1.FileContentService/GetFileRevisionTextDiffPreview",
1655 );
1656 let mut req = request.into_request();
1657 req.extensions_mut()
1658 .insert(
1659 GrpcMethod::new(
1660 "nominal.file_store.v1.FileContentService",
1661 "GetFileRevisionTextDiffPreview",
1662 ),
1663 );
1664 self.inner.unary(req, path, codec).await
1665 }
1666 }
1667}
1668#[derive(Clone, PartialEq, ::prost::Message)]
1669pub struct UploadedObjectRef {
1670 #[prost(string, tag = "1")]
1671 pub object_key: ::prost::alloc::string::String,
1672}
1673#[derive(Clone, PartialEq, ::prost::Message)]
1674pub struct PathTarget {
1675 #[prost(message, optional, tag = "1")]
1676 pub path: ::core::option::Option<LogicalPath>,
1677}
1678#[derive(Clone, PartialEq, ::prost::Message)]
1679pub struct Destination {
1680 #[prost(oneof = "destination::Target", tags = "1, 2")]
1681 pub target: ::core::option::Option<destination::Target>,
1682}
1683pub mod destination {
1685 #[derive(Clone, PartialEq, ::prost::Oneof)]
1686 pub enum Target {
1687 #[prost(message, tag = "1")]
1688 Path(super::PathTarget),
1689 #[prost(string, tag = "2")]
1690 FileRevisionRid(::prost::alloc::string::String),
1691 }
1692}
1693#[derive(Clone, PartialEq, ::prost::Message)]
1694pub struct PutFile {
1695 #[prost(message, optional, tag = "1")]
1696 pub object: ::core::option::Option<UploadedObjectRef>,
1697 #[prost(uint64, tag = "2")]
1698 pub size_bytes: u64,
1699 #[prost(message, optional, tag = "3")]
1700 pub destination: ::core::option::Option<Destination>,
1701}
1702#[derive(Clone, PartialEq, ::prost::Message)]
1703pub struct MoveFile {
1704 #[prost(string, tag = "1")]
1705 pub source_revision_rid: ::prost::alloc::string::String,
1706 #[prost(message, optional, tag = "2")]
1707 pub destination: ::core::option::Option<Destination>,
1708}
1709#[derive(Clone, PartialEq, ::prost::Message)]
1710pub struct RemoveFile {
1711 #[prost(string, tag = "1")]
1712 pub revision_rid: ::prost::alloc::string::String,
1713}
1714#[derive(Clone, PartialEq, ::prost::Message)]
1715pub struct RestoreFile {
1716 #[prost(string, tag = "1")]
1717 pub restore_revision_rid: ::prost::alloc::string::String,
1718 #[prost(message, optional, tag = "2")]
1719 pub destination: ::core::option::Option<Destination>,
1720}
1721#[derive(Clone, PartialEq, ::prost::Message)]
1722pub struct MoveDirectory {
1723 #[prost(message, optional, tag = "1")]
1724 pub from: ::core::option::Option<LogicalPath>,
1725 #[prost(message, optional, tag = "2")]
1726 pub to: ::core::option::Option<LogicalPath>,
1727}
1728#[derive(Clone, PartialEq, ::prost::Message)]
1729pub struct FileChange {
1730 #[prost(oneof = "file_change::Change", tags = "1, 2, 3, 4, 5")]
1731 pub change: ::core::option::Option<file_change::Change>,
1732}
1733pub mod file_change {
1735 #[derive(Clone, PartialEq, ::prost::Oneof)]
1736 pub enum Change {
1737 #[prost(message, tag = "1")]
1738 Put(super::PutFile),
1739 #[prost(message, tag = "2")]
1740 Move(super::MoveFile),
1741 #[prost(message, tag = "3")]
1742 Remove(super::RemoveFile),
1743 #[prost(message, tag = "4")]
1744 Restore(super::RestoreFile),
1745 #[prost(message, tag = "5")]
1746 MoveDirectory(super::MoveDirectory),
1747 }
1748}
1749#[derive(Clone, PartialEq, ::prost::Message)]
1750pub struct GetFileRequest {
1751 #[prost(string, tag = "1")]
1752 pub drive_rid: ::prost::alloc::string::String,
1753 #[prost(message, optional, tag = "2")]
1754 pub path: ::core::option::Option<LogicalPath>,
1755 #[prost(bool, tag = "3")]
1756 pub include_removed: bool,
1757}
1758#[derive(Clone, PartialEq, ::prost::Message)]
1759pub struct GetFileByIdentityRequest {
1760 #[prost(message, optional, tag = "1")]
1761 pub identity: ::core::option::Option<LogicalFileIdentity>,
1762}
1763#[derive(Clone, PartialEq, ::prost::Message)]
1764pub struct GetFileResponse {
1765 #[prost(message, optional, tag = "1")]
1766 pub file: ::core::option::Option<LogicalFile>,
1767 #[prost(string, tag = "2")]
1768 pub drive_rid: ::prost::alloc::string::String,
1769}
1770#[derive(Clone, PartialEq, ::prost::Message)]
1771pub struct GetFileByIdentityResponse {
1772 #[prost(message, optional, tag = "1")]
1773 pub file: ::core::option::Option<LogicalFile>,
1774 #[prost(string, tag = "2")]
1775 pub drive_rid: ::prost::alloc::string::String,
1776}
1777#[derive(Clone, PartialEq, ::prost::Message)]
1778pub struct ResolveFileRevisionRequest {
1779 #[prost(message, optional, tag = "2")]
1780 pub source_ref: ::core::option::Option<FileRevisionRef>,
1781}
1782#[derive(Clone, PartialEq, ::prost::Message)]
1783pub struct ResolveFileRevisionResponse {
1784 #[prost(string, tag = "1")]
1785 pub file_revision_rid: ::prost::alloc::string::String,
1786 #[prost(string, tag = "2")]
1787 pub drive_rid: ::prost::alloc::string::String,
1788 #[prost(message, optional, tag = "3")]
1789 pub file_revision: ::core::option::Option<FileRevision>,
1790}
1791#[derive(Clone, PartialEq, ::prost::Message)]
1792pub struct ListFilesRequest {
1793 #[prost(string, tag = "1")]
1794 pub drive_rid: ::prost::alloc::string::String,
1795 #[prost(message, optional, tag = "2")]
1796 pub parent_path: ::core::option::Option<LogicalPath>,
1797 #[prost(bool, tag = "3")]
1798 pub include_removed: bool,
1799 #[prost(int32, optional, tag = "4")]
1800 pub page_size: ::core::option::Option<i32>,
1801 #[prost(string, optional, tag = "5")]
1802 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1803}
1804#[derive(Clone, PartialEq, ::prost::Message)]
1805pub struct ListFilesResponse {
1806 #[prost(message, repeated, tag = "1")]
1807 pub entries: ::prost::alloc::vec::Vec<FileEntry>,
1808 #[prost(string, optional, tag = "2")]
1809 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1810}
1811#[derive(Clone, PartialEq, ::prost::Message)]
1812pub struct ApplyFileChangesRequest {
1813 #[prost(string, tag = "1")]
1814 pub drive_rid: ::prost::alloc::string::String,
1815 #[prost(message, repeated, tag = "2")]
1816 pub changes: ::prost::alloc::vec::Vec<FileChange>,
1817}
1818#[derive(Clone, PartialEq, ::prost::Message)]
1819pub struct ApplyFileChangesResponse {
1820 #[prost(message, repeated, tag = "1")]
1821 pub results: ::prost::alloc::vec::Vec<FileChangeResult>,
1822}
1823#[derive(Clone, PartialEq, ::prost::Message)]
1824pub struct FileChangeSuccess {
1825 #[prost(message, optional, tag = "1")]
1826 pub file: ::core::option::Option<LogicalFile>,
1827 #[prost(message, optional, tag = "2")]
1828 pub file_revision: ::core::option::Option<ManagedFileRevision>,
1829}
1830#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1831pub struct MoveDirectorySuccess {}
1832#[derive(Clone, PartialEq, ::prost::Message)]
1833pub struct FileChangeFailure {
1834 #[prost(string, tag = "2")]
1835 pub message: ::prost::alloc::string::String,
1836 #[prost(oneof = "file_change_failure::Error", tags = "3, 4")]
1837 pub error: ::core::option::Option<file_change_failure::Error>,
1838}
1839pub mod file_change_failure {
1841 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1842 pub enum Error {
1843 #[prost(enumeration = "super::FileStoreCommonError", tag = "3")]
1844 Common(i32),
1845 #[prost(enumeration = "super::FileChangeError", tag = "4")]
1846 Change(i32),
1847 }
1848}
1849#[derive(Clone, PartialEq, ::prost::Message)]
1850pub struct FileChangeResult {
1851 #[prost(oneof = "file_change_result::Result", tags = "1, 2, 3")]
1852 pub result: ::core::option::Option<file_change_result::Result>,
1853}
1854pub mod file_change_result {
1856 #[derive(Clone, PartialEq, ::prost::Oneof)]
1857 pub enum Result {
1858 #[prost(message, tag = "1")]
1859 Success(super::FileChangeSuccess),
1860 #[prost(message, tag = "2")]
1861 Failure(super::FileChangeFailure),
1862 #[prost(message, tag = "3")]
1863 DirectoryMoved(super::MoveDirectorySuccess),
1864 }
1865}
1866#[derive(Clone, PartialEq, ::prost::Message)]
1867pub struct ListFileRevisionsRequest {
1868 #[prost(string, tag = "1")]
1869 pub drive_rid: ::prost::alloc::string::String,
1870 #[prost(string, tag = "2")]
1871 pub file_rid: ::prost::alloc::string::String,
1872 #[prost(int32, optional, tag = "3")]
1873 pub page_size: ::core::option::Option<i32>,
1874 #[prost(string, optional, tag = "4")]
1875 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1876}
1877#[derive(Clone, PartialEq, ::prost::Message)]
1878pub struct ListFileRevisionsResponse {
1879 #[prost(message, repeated, tag = "1")]
1880 pub file_revisions: ::prost::alloc::vec::Vec<ManagedFileRevision>,
1881 #[prost(string, optional, tag = "2")]
1882 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1883}
1884#[derive(Clone, PartialEq, ::prost::Message)]
1885pub struct PurgeFileRequest {
1886 #[prost(string, tag = "1")]
1887 pub file_revision_rid: ::prost::alloc::string::String,
1888}
1889#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1890pub struct PurgeFileResponse {}
1891#[derive(Clone, PartialEq, ::prost::Message)]
1892pub struct GetDownloadUrlRequest {
1893 #[prost(string, tag = "1")]
1894 pub file_revision_rid: ::prost::alloc::string::String,
1895}
1896#[derive(Clone, PartialEq, ::prost::Message)]
1897pub struct GetDownloadUrlResponse {
1898 #[prost(string, tag = "1")]
1899 pub url: ::prost::alloc::string::String,
1900}
1901#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1902#[repr(i32)]
1903pub enum RevisionReadError {
1904 Unspecified = 0,
1905 BytesReclaimed = 1,
1906 MaterializationFailed = 2,
1907}
1908impl RevisionReadError {
1909 pub fn as_str_name(&self) -> &'static str {
1914 match self {
1915 Self::Unspecified => "REVISION_READ_ERROR_UNSPECIFIED",
1916 Self::BytesReclaimed => "REVISION_READ_ERROR_BYTES_RECLAIMED",
1917 Self::MaterializationFailed => "REVISION_READ_ERROR_MATERIALIZATION_FAILED",
1918 }
1919 }
1920 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1922 match value {
1923 "REVISION_READ_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1924 "REVISION_READ_ERROR_BYTES_RECLAIMED" => Some(Self::BytesReclaimed),
1925 "REVISION_READ_ERROR_MATERIALIZATION_FAILED" => {
1926 Some(Self::MaterializationFailed)
1927 }
1928 _ => None,
1929 }
1930 }
1931}
1932#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1933#[repr(i32)]
1934pub enum FileChangeError {
1935 Unspecified = 0,
1936 PathAlreadyExists = 1,
1937 InvalidLogicalPath = 2,
1938 RevisionPreconditionFailed = 3,
1939 ReadOnlyDrive = 4,
1940 UploadedObjectNotFound = 5,
1941 DirectoryMoveLimitExceeded = 6,
1942}
1943impl FileChangeError {
1944 pub fn as_str_name(&self) -> &'static str {
1949 match self {
1950 Self::Unspecified => "FILE_CHANGE_ERROR_UNSPECIFIED",
1951 Self::PathAlreadyExists => "FILE_CHANGE_ERROR_PATH_ALREADY_EXISTS",
1952 Self::InvalidLogicalPath => "FILE_CHANGE_ERROR_INVALID_LOGICAL_PATH",
1953 Self::RevisionPreconditionFailed => {
1954 "FILE_CHANGE_ERROR_REVISION_PRECONDITION_FAILED"
1955 }
1956 Self::ReadOnlyDrive => "FILE_CHANGE_ERROR_READ_ONLY_DRIVE",
1957 Self::UploadedObjectNotFound => "FILE_CHANGE_ERROR_UPLOADED_OBJECT_NOT_FOUND",
1958 Self::DirectoryMoveLimitExceeded => {
1959 "FILE_CHANGE_ERROR_DIRECTORY_MOVE_LIMIT_EXCEEDED"
1960 }
1961 }
1962 }
1963 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1965 match value {
1966 "FILE_CHANGE_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1967 "FILE_CHANGE_ERROR_PATH_ALREADY_EXISTS" => Some(Self::PathAlreadyExists),
1968 "FILE_CHANGE_ERROR_INVALID_LOGICAL_PATH" => Some(Self::InvalidLogicalPath),
1969 "FILE_CHANGE_ERROR_REVISION_PRECONDITION_FAILED" => {
1970 Some(Self::RevisionPreconditionFailed)
1971 }
1972 "FILE_CHANGE_ERROR_READ_ONLY_DRIVE" => Some(Self::ReadOnlyDrive),
1973 "FILE_CHANGE_ERROR_UPLOADED_OBJECT_NOT_FOUND" => {
1974 Some(Self::UploadedObjectNotFound)
1975 }
1976 "FILE_CHANGE_ERROR_DIRECTORY_MOVE_LIMIT_EXCEEDED" => {
1977 Some(Self::DirectoryMoveLimitExceeded)
1978 }
1979 _ => None,
1980 }
1981 }
1982}
1983pub mod files_service_client {
1985 #![allow(
1986 unused_variables,
1987 dead_code,
1988 missing_docs,
1989 clippy::wildcard_imports,
1990 clippy::let_unit_value,
1991 )]
1992 use tonic::codegen::*;
1993 use tonic::codegen::http::Uri;
1994 #[derive(Debug, Clone)]
1995 pub struct FilesServiceClient<T> {
1996 inner: tonic::client::Grpc<T>,
1997 }
1998 impl FilesServiceClient<tonic::transport::Channel> {
1999 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2001 where
2002 D: TryInto<tonic::transport::Endpoint>,
2003 D::Error: Into<StdError>,
2004 {
2005 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2006 Ok(Self::new(conn))
2007 }
2008 }
2009 impl<T> FilesServiceClient<T>
2010 where
2011 T: tonic::client::GrpcService<tonic::body::Body>,
2012 T::Error: Into<StdError>,
2013 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2014 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2015 {
2016 pub fn new(inner: T) -> Self {
2017 let inner = tonic::client::Grpc::new(inner);
2018 Self { inner }
2019 }
2020 pub fn with_origin(inner: T, origin: Uri) -> Self {
2021 let inner = tonic::client::Grpc::with_origin(inner, origin);
2022 Self { inner }
2023 }
2024 pub fn with_interceptor<F>(
2025 inner: T,
2026 interceptor: F,
2027 ) -> FilesServiceClient<InterceptedService<T, F>>
2028 where
2029 F: tonic::service::Interceptor,
2030 T::ResponseBody: Default,
2031 T: tonic::codegen::Service<
2032 http::Request<tonic::body::Body>,
2033 Response = http::Response<
2034 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2035 >,
2036 >,
2037 <T as tonic::codegen::Service<
2038 http::Request<tonic::body::Body>,
2039 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2040 {
2041 FilesServiceClient::new(InterceptedService::new(inner, interceptor))
2042 }
2043 #[must_use]
2048 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2049 self.inner = self.inner.send_compressed(encoding);
2050 self
2051 }
2052 #[must_use]
2054 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2055 self.inner = self.inner.accept_compressed(encoding);
2056 self
2057 }
2058 #[must_use]
2062 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2063 self.inner = self.inner.max_decoding_message_size(limit);
2064 self
2065 }
2066 #[must_use]
2070 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2071 self.inner = self.inner.max_encoding_message_size(limit);
2072 self
2073 }
2074 pub async fn get_file(
2075 &mut self,
2076 request: impl tonic::IntoRequest<super::GetFileRequest>,
2077 ) -> std::result::Result<
2078 tonic::Response<super::GetFileResponse>,
2079 tonic::Status,
2080 > {
2081 self.inner
2082 .ready()
2083 .await
2084 .map_err(|e| {
2085 tonic::Status::unknown(
2086 format!("Service was not ready: {}", e.into()),
2087 )
2088 })?;
2089 let codec = tonic::codec::ProstCodec::default();
2090 let path = http::uri::PathAndQuery::from_static(
2091 "/nominal.file_store.v1.FilesService/GetFile",
2092 );
2093 let mut req = request.into_request();
2094 req.extensions_mut()
2095 .insert(
2096 GrpcMethod::new("nominal.file_store.v1.FilesService", "GetFile"),
2097 );
2098 self.inner.unary(req, path, codec).await
2099 }
2100 pub async fn get_file_by_identity(
2101 &mut self,
2102 request: impl tonic::IntoRequest<super::GetFileByIdentityRequest>,
2103 ) -> std::result::Result<
2104 tonic::Response<super::GetFileByIdentityResponse>,
2105 tonic::Status,
2106 > {
2107 self.inner
2108 .ready()
2109 .await
2110 .map_err(|e| {
2111 tonic::Status::unknown(
2112 format!("Service was not ready: {}", e.into()),
2113 )
2114 })?;
2115 let codec = tonic::codec::ProstCodec::default();
2116 let path = http::uri::PathAndQuery::from_static(
2117 "/nominal.file_store.v1.FilesService/GetFileByIdentity",
2118 );
2119 let mut req = request.into_request();
2120 req.extensions_mut()
2121 .insert(
2122 GrpcMethod::new(
2123 "nominal.file_store.v1.FilesService",
2124 "GetFileByIdentity",
2125 ),
2126 );
2127 self.inner.unary(req, path, codec).await
2128 }
2129 pub async fn resolve_file_revision(
2130 &mut self,
2131 request: impl tonic::IntoRequest<super::ResolveFileRevisionRequest>,
2132 ) -> std::result::Result<
2133 tonic::Response<super::ResolveFileRevisionResponse>,
2134 tonic::Status,
2135 > {
2136 self.inner
2137 .ready()
2138 .await
2139 .map_err(|e| {
2140 tonic::Status::unknown(
2141 format!("Service was not ready: {}", e.into()),
2142 )
2143 })?;
2144 let codec = tonic::codec::ProstCodec::default();
2145 let path = http::uri::PathAndQuery::from_static(
2146 "/nominal.file_store.v1.FilesService/ResolveFileRevision",
2147 );
2148 let mut req = request.into_request();
2149 req.extensions_mut()
2150 .insert(
2151 GrpcMethod::new(
2152 "nominal.file_store.v1.FilesService",
2153 "ResolveFileRevision",
2154 ),
2155 );
2156 self.inner.unary(req, path, codec).await
2157 }
2158 pub async fn list_files(
2159 &mut self,
2160 request: impl tonic::IntoRequest<super::ListFilesRequest>,
2161 ) -> std::result::Result<
2162 tonic::Response<super::ListFilesResponse>,
2163 tonic::Status,
2164 > {
2165 self.inner
2166 .ready()
2167 .await
2168 .map_err(|e| {
2169 tonic::Status::unknown(
2170 format!("Service was not ready: {}", e.into()),
2171 )
2172 })?;
2173 let codec = tonic::codec::ProstCodec::default();
2174 let path = http::uri::PathAndQuery::from_static(
2175 "/nominal.file_store.v1.FilesService/ListFiles",
2176 );
2177 let mut req = request.into_request();
2178 req.extensions_mut()
2179 .insert(
2180 GrpcMethod::new("nominal.file_store.v1.FilesService", "ListFiles"),
2181 );
2182 self.inner.unary(req, path, codec).await
2183 }
2184 pub async fn apply_file_changes(
2185 &mut self,
2186 request: impl tonic::IntoRequest<super::ApplyFileChangesRequest>,
2187 ) -> std::result::Result<
2188 tonic::Response<super::ApplyFileChangesResponse>,
2189 tonic::Status,
2190 > {
2191 self.inner
2192 .ready()
2193 .await
2194 .map_err(|e| {
2195 tonic::Status::unknown(
2196 format!("Service was not ready: {}", e.into()),
2197 )
2198 })?;
2199 let codec = tonic::codec::ProstCodec::default();
2200 let path = http::uri::PathAndQuery::from_static(
2201 "/nominal.file_store.v1.FilesService/ApplyFileChanges",
2202 );
2203 let mut req = request.into_request();
2204 req.extensions_mut()
2205 .insert(
2206 GrpcMethod::new(
2207 "nominal.file_store.v1.FilesService",
2208 "ApplyFileChanges",
2209 ),
2210 );
2211 self.inner.unary(req, path, codec).await
2212 }
2213 pub async fn list_file_revisions(
2214 &mut self,
2215 request: impl tonic::IntoRequest<super::ListFileRevisionsRequest>,
2216 ) -> std::result::Result<
2217 tonic::Response<super::ListFileRevisionsResponse>,
2218 tonic::Status,
2219 > {
2220 self.inner
2221 .ready()
2222 .await
2223 .map_err(|e| {
2224 tonic::Status::unknown(
2225 format!("Service was not ready: {}", e.into()),
2226 )
2227 })?;
2228 let codec = tonic::codec::ProstCodec::default();
2229 let path = http::uri::PathAndQuery::from_static(
2230 "/nominal.file_store.v1.FilesService/ListFileRevisions",
2231 );
2232 let mut req = request.into_request();
2233 req.extensions_mut()
2234 .insert(
2235 GrpcMethod::new(
2236 "nominal.file_store.v1.FilesService",
2237 "ListFileRevisions",
2238 ),
2239 );
2240 self.inner.unary(req, path, codec).await
2241 }
2242 pub async fn purge_file(
2243 &mut self,
2244 request: impl tonic::IntoRequest<super::PurgeFileRequest>,
2245 ) -> std::result::Result<
2246 tonic::Response<super::PurgeFileResponse>,
2247 tonic::Status,
2248 > {
2249 self.inner
2250 .ready()
2251 .await
2252 .map_err(|e| {
2253 tonic::Status::unknown(
2254 format!("Service was not ready: {}", e.into()),
2255 )
2256 })?;
2257 let codec = tonic::codec::ProstCodec::default();
2258 let path = http::uri::PathAndQuery::from_static(
2259 "/nominal.file_store.v1.FilesService/PurgeFile",
2260 );
2261 let mut req = request.into_request();
2262 req.extensions_mut()
2263 .insert(
2264 GrpcMethod::new("nominal.file_store.v1.FilesService", "PurgeFile"),
2265 );
2266 self.inner.unary(req, path, codec).await
2267 }
2268 pub async fn get_download_url(
2269 &mut self,
2270 request: impl tonic::IntoRequest<super::GetDownloadUrlRequest>,
2271 ) -> std::result::Result<
2272 tonic::Response<super::GetDownloadUrlResponse>,
2273 tonic::Status,
2274 > {
2275 self.inner
2276 .ready()
2277 .await
2278 .map_err(|e| {
2279 tonic::Status::unknown(
2280 format!("Service was not ready: {}", e.into()),
2281 )
2282 })?;
2283 let codec = tonic::codec::ProstCodec::default();
2284 let path = http::uri::PathAndQuery::from_static(
2285 "/nominal.file_store.v1.FilesService/GetDownloadUrl",
2286 );
2287 let mut req = request.into_request();
2288 req.extensions_mut()
2289 .insert(
2290 GrpcMethod::new(
2291 "nominal.file_store.v1.FilesService",
2292 "GetDownloadUrl",
2293 ),
2294 );
2295 self.inner.unary(req, path, codec).await
2296 }
2297 }
2298}
2299#[derive(Clone, PartialEq, ::prost::Message)]
2300pub struct CreateIngestRuleRequest {
2301 #[prost(string, tag = "1")]
2302 pub drive_rid: ::prost::alloc::string::String,
2303 #[prost(message, optional, tag = "2")]
2304 pub matcher: ::core::option::Option<FileMatcher>,
2305 #[prost(message, optional, tag = "3")]
2306 pub triggers: ::core::option::Option<IngestTriggers>,
2307 #[prost(enumeration = "BackfillMode", tag = "4")]
2308 pub backfill_mode: i32,
2309}
2310#[derive(Clone, PartialEq, ::prost::Message)]
2311pub struct CreateIngestRuleResponse {
2312 #[prost(message, optional, tag = "1")]
2313 pub rule: ::core::option::Option<IngestRule>,
2314}
2315#[derive(Clone, PartialEq, ::prost::Message)]
2316pub struct ListIngestRulesRequest {
2317 #[prost(string, tag = "1")]
2318 pub drive_rid: ::prost::alloc::string::String,
2319 #[prost(bool, tag = "2")]
2320 pub include_archived: bool,
2321 #[prost(int32, optional, tag = "3")]
2322 pub page_size: ::core::option::Option<i32>,
2323 #[prost(string, optional, tag = "4")]
2324 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
2325}
2326#[derive(Clone, PartialEq, ::prost::Message)]
2327pub struct ListIngestRulesResponse {
2328 #[prost(message, repeated, tag = "1")]
2329 pub rules: ::prost::alloc::vec::Vec<IngestRule>,
2330 #[prost(string, optional, tag = "2")]
2331 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
2332}
2333#[derive(Clone, PartialEq, ::prost::Message)]
2334pub struct GetIngestRuleRequest {
2335 #[prost(string, tag = "1")]
2336 pub rule_rid: ::prost::alloc::string::String,
2337}
2338#[derive(Clone, PartialEq, ::prost::Message)]
2339pub struct GetIngestRuleResponse {
2340 #[prost(message, optional, tag = "1")]
2341 pub rule: ::core::option::Option<IngestRule>,
2342}
2343#[derive(Clone, PartialEq, ::prost::Message)]
2344pub struct UpdateIngestRuleRequest {
2345 #[prost(string, tag = "1")]
2346 pub rule_rid: ::prost::alloc::string::String,
2347 #[prost(message, optional, tag = "2")]
2348 pub matcher: ::core::option::Option<FileMatcher>,
2349 #[prost(message, optional, tag = "3")]
2350 pub triggers: ::core::option::Option<IngestTriggers>,
2351}
2352#[derive(Clone, PartialEq, ::prost::Message)]
2353pub struct UpdateIngestRuleResponse {
2354 #[prost(message, optional, tag = "1")]
2355 pub rule: ::core::option::Option<IngestRule>,
2356}
2357#[derive(Clone, PartialEq, ::prost::Message)]
2358pub struct ArchiveIngestRuleRequest {
2359 #[prost(string, tag = "1")]
2360 pub rule_rid: ::prost::alloc::string::String,
2361}
2362#[derive(Clone, PartialEq, ::prost::Message)]
2363pub struct ArchiveIngestRuleResponse {
2364 #[prost(message, optional, tag = "1")]
2365 pub rule: ::core::option::Option<IngestRule>,
2366}
2367#[derive(Clone, PartialEq, ::prost::Message)]
2368pub struct UnarchiveIngestRuleRequest {
2369 #[prost(string, tag = "1")]
2370 pub rule_rid: ::prost::alloc::string::String,
2371 #[prost(enumeration = "BackfillMode", tag = "2")]
2372 pub backfill_mode: i32,
2373}
2374#[derive(Clone, PartialEq, ::prost::Message)]
2375pub struct UnarchiveIngestRuleResponse {
2376 #[prost(message, optional, tag = "1")]
2377 pub rule: ::core::option::Option<IngestRule>,
2378}
2379#[derive(Clone, PartialEq, ::prost::Message)]
2380pub struct IngestRule {
2381 #[prost(string, tag = "1")]
2382 pub rule_rid: ::prost::alloc::string::String,
2383 #[prost(string, tag = "2")]
2384 pub drive_rid: ::prost::alloc::string::String,
2385 #[prost(message, optional, tag = "3")]
2386 pub matcher: ::core::option::Option<FileMatcher>,
2387 #[prost(message, optional, tag = "4")]
2388 pub triggers: ::core::option::Option<IngestTriggers>,
2389 #[prost(message, optional, tag = "5")]
2390 pub created: ::core::option::Option<Attribution>,
2391 #[prost(enumeration = "IngestRuleState", tag = "6")]
2392 pub state: i32,
2393 #[prost(message, optional, tag = "7")]
2394 pub archived: ::core::option::Option<Attribution>,
2395 #[prost(message, optional, tag = "8")]
2396 pub updated: ::core::option::Option<Attribution>,
2397}
2398#[derive(Clone, PartialEq, ::prost::Message)]
2399pub struct FileMatcher {
2400 #[prost(oneof = "file_matcher::Matcher", tags = "1")]
2401 pub matcher: ::core::option::Option<file_matcher::Matcher>,
2402}
2403pub mod file_matcher {
2405 #[derive(Clone, PartialEq, ::prost::Oneof)]
2406 pub enum Matcher {
2407 #[prost(message, tag = "1")]
2408 Path(super::PathMatcher),
2409 }
2410}
2411#[derive(Clone, PartialEq, ::prost::Message)]
2412pub struct PathMatcher {
2413 #[prost(message, optional, tag = "1")]
2414 pub pattern: ::core::option::Option<PathPattern>,
2415 #[prost(message, optional, tag = "2")]
2416 pub format: ::core::option::Option<FormatConfig>,
2417}
2418#[derive(Clone, PartialEq, ::prost::Message)]
2419pub struct FormatConfig {
2420 #[prost(oneof = "format_config::Format", tags = "1, 2, 3, 4, 5")]
2421 pub format: ::core::option::Option<format_config::Format>,
2422}
2423pub mod format_config {
2425 #[derive(Clone, PartialEq, ::prost::Oneof)]
2426 pub enum Format {
2427 #[prost(message, tag = "1")]
2428 Csv(super::CsvIngestConfig),
2429 #[prost(message, tag = "2")]
2430 Parquet(super::ParquetIngestConfig),
2431 #[prost(message, tag = "3")]
2432 Dataflash(super::DataflashIngestConfig),
2433 #[prost(message, tag = "4")]
2434 Containerized(super::ContainerizedIngestConfig),
2435 #[prost(message, tag = "5")]
2436 Mcap(super::McapIngestConfig),
2437 }
2438}
2439#[derive(Clone, PartialEq, ::prost::Message)]
2440pub struct ContainerizedIngestConfig {
2441 #[prost(string, tag = "1")]
2442 pub extractor_rid: ::prost::alloc::string::String,
2443 #[prost(map = "string, string", tag = "2")]
2444 pub arguments: ::std::collections::HashMap<
2445 ::prost::alloc::string::String,
2446 ::prost::alloc::string::String,
2447 >,
2448 #[prost(message, optional, tag = "3")]
2449 pub timestamp: ::core::option::Option<TimestampConfig>,
2450}
2451#[derive(Clone, PartialEq, ::prost::Message)]
2452pub struct CsvIngestConfig {
2453 #[prost(message, optional, tag = "1")]
2454 pub timestamp: ::core::option::Option<TimestampConfig>,
2455 #[prost(string, optional, tag = "2")]
2456 pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
2457}
2458#[derive(Clone, PartialEq, ::prost::Message)]
2459pub struct ParquetIngestConfig {
2460 #[prost(message, optional, tag = "1")]
2461 pub timestamp: ::core::option::Option<TimestampConfig>,
2462 #[prost(string, optional, tag = "2")]
2463 pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
2464}
2465#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2466pub struct DataflashIngestConfig {}
2467#[derive(Clone, PartialEq, ::prost::Message)]
2468pub struct McapIngestConfig {
2469 #[prost(message, optional, tag = "1")]
2470 pub channels: ::core::option::Option<McapChannelSelection>,
2471 #[prost(bool, tag = "2")]
2472 pub ignore_invalid_topics: bool,
2473}
2474#[derive(Clone, PartialEq, ::prost::Message)]
2475pub struct McapChannelSelection {
2476 #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
2477 pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
2478}
2479pub mod mcap_channel_selection {
2481 #[derive(Clone, PartialEq, ::prost::Oneof)]
2482 pub enum Selection {
2483 #[prost(message, tag = "1")]
2484 IncludeTopics(super::McapTopicNames),
2485 #[prost(message, tag = "2")]
2486 ExcludeTopics(super::McapTopicNames),
2487 }
2488}
2489#[derive(Clone, PartialEq, ::prost::Message)]
2490pub struct McapTopicNames {
2491 #[prost(string, repeated, tag = "1")]
2492 pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2493}
2494#[derive(Clone, PartialEq, ::prost::Message)]
2495pub struct TimestampConfig {
2496 #[prost(oneof = "timestamp_config::Kind", tags = "1")]
2497 pub kind: ::core::option::Option<timestamp_config::Kind>,
2498}
2499pub mod timestamp_config {
2501 #[derive(Clone, PartialEq, ::prost::Oneof)]
2502 pub enum Kind {
2503 #[prost(message, tag = "1")]
2504 Single(super::TimestampCandidate),
2505 }
2506}
2507#[derive(Clone, PartialEq, ::prost::Message)]
2508pub struct TimestampCandidate {
2509 #[prost(string, tag = "1")]
2510 pub column: ::prost::alloc::string::String,
2511 #[prost(message, optional, tag = "2")]
2512 pub r#type: ::core::option::Option<super::super::types::time::AbsoluteTimestamp>,
2513}
2514#[derive(Clone, PartialEq, ::prost::Message)]
2515pub struct PathPattern {
2516 #[prost(message, optional, tag = "1")]
2517 pub first: ::core::option::Option<PatternSegment>,
2518 #[prost(message, repeated, tag = "2")]
2519 pub rest: ::prost::alloc::vec::Vec<JoinedSegment>,
2520}
2521#[derive(Clone, PartialEq, ::prost::Message)]
2522pub struct JoinedSegment {
2523 #[prost(enumeration = "SegmentDelimiter", tag = "1")]
2524 pub delimiter: i32,
2525 #[prost(message, optional, tag = "2")]
2526 pub segment: ::core::option::Option<PatternSegment>,
2527}
2528#[derive(Clone, PartialEq, ::prost::Message)]
2529pub struct PatternSegment {
2530 #[prost(oneof = "pattern_segment::Kind", tags = "1, 2, 3")]
2531 pub kind: ::core::option::Option<pattern_segment::Kind>,
2532}
2533pub mod pattern_segment {
2535 #[derive(Clone, PartialEq, ::prost::Oneof)]
2536 pub enum Kind {
2537 #[prost(message, tag = "1")]
2538 ShallowWildcard(super::ShallowWildcard),
2539 #[prost(message, tag = "2")]
2540 DeepWildcard(super::DeepWildcard),
2541 #[prost(string, tag = "3")]
2542 Literal(::prost::alloc::string::String),
2543 }
2544}
2545#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2546pub struct ShallowWildcard {}
2547#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2548pub struct DeepWildcard {}
2549#[derive(Clone, PartialEq, ::prost::Message)]
2550pub struct IngestTriggers {
2551 #[prost(message, optional, tag = "1")]
2552 pub new_match: ::core::option::Option<IngestTarget>,
2553}
2554#[derive(Clone, PartialEq, ::prost::Message)]
2555pub struct IngestTarget {
2556 #[prost(oneof = "ingest_target::Target", tags = "1, 2")]
2557 pub target: ::core::option::Option<ingest_target::Target>,
2558}
2559pub mod ingest_target {
2561 #[derive(Clone, PartialEq, ::prost::Oneof)]
2562 pub enum Target {
2563 #[prost(message, tag = "1")]
2564 NewDataset(super::NewDatasetTarget),
2565 #[prost(message, tag = "2")]
2566 ExistingDataset(super::ExistingDatasetTarget),
2567 }
2568}
2569#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2570pub struct NewDatasetTarget {}
2571#[derive(Clone, PartialEq, ::prost::Message)]
2572pub struct ExistingDatasetTarget {
2573 #[prost(string, tag = "1")]
2574 pub dataset_rid: ::prost::alloc::string::String,
2575}
2576#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2577#[repr(i32)]
2578pub enum BackfillMode {
2579 Unspecified = 0,
2580 NewFilesOnly = 1,
2581 BackfillExisting = 2,
2582}
2583impl BackfillMode {
2584 pub fn as_str_name(&self) -> &'static str {
2589 match self {
2590 Self::Unspecified => "BACKFILL_MODE_UNSPECIFIED",
2591 Self::NewFilesOnly => "BACKFILL_MODE_NEW_FILES_ONLY",
2592 Self::BackfillExisting => "BACKFILL_MODE_BACKFILL_EXISTING",
2593 }
2594 }
2595 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2597 match value {
2598 "BACKFILL_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2599 "BACKFILL_MODE_NEW_FILES_ONLY" => Some(Self::NewFilesOnly),
2600 "BACKFILL_MODE_BACKFILL_EXISTING" => Some(Self::BackfillExisting),
2601 _ => None,
2602 }
2603 }
2604}
2605#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2606#[repr(i32)]
2607pub enum IngestRuleState {
2608 Unspecified = 0,
2609 Active = 1,
2610 Archived = 2,
2611}
2612impl IngestRuleState {
2613 pub fn as_str_name(&self) -> &'static str {
2618 match self {
2619 Self::Unspecified => "INGEST_RULE_STATE_UNSPECIFIED",
2620 Self::Active => "INGEST_RULE_STATE_ACTIVE",
2621 Self::Archived => "INGEST_RULE_STATE_ARCHIVED",
2622 }
2623 }
2624 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2626 match value {
2627 "INGEST_RULE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
2628 "INGEST_RULE_STATE_ACTIVE" => Some(Self::Active),
2629 "INGEST_RULE_STATE_ARCHIVED" => Some(Self::Archived),
2630 _ => None,
2631 }
2632 }
2633}
2634#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2635#[repr(i32)]
2636pub enum SegmentDelimiter {
2637 Unspecified = 0,
2638 PathSeparator = 1,
2639 Concat = 2,
2640}
2641impl SegmentDelimiter {
2642 pub fn as_str_name(&self) -> &'static str {
2647 match self {
2648 Self::Unspecified => "SEGMENT_DELIMITER_UNSPECIFIED",
2649 Self::PathSeparator => "SEGMENT_DELIMITER_PATH_SEPARATOR",
2650 Self::Concat => "SEGMENT_DELIMITER_CONCAT",
2651 }
2652 }
2653 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2655 match value {
2656 "SEGMENT_DELIMITER_UNSPECIFIED" => Some(Self::Unspecified),
2657 "SEGMENT_DELIMITER_PATH_SEPARATOR" => Some(Self::PathSeparator),
2658 "SEGMENT_DELIMITER_CONCAT" => Some(Self::Concat),
2659 _ => None,
2660 }
2661 }
2662}
2663#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2664#[repr(i32)]
2665pub enum IngestRulesError {
2666 Unspecified = 0,
2667 RuleNotFound = 1,
2668}
2669impl IngestRulesError {
2670 pub fn as_str_name(&self) -> &'static str {
2675 match self {
2676 Self::Unspecified => "INGEST_RULES_ERROR_UNSPECIFIED",
2677 Self::RuleNotFound => "INGEST_RULES_ERROR_RULE_NOT_FOUND",
2678 }
2679 }
2680 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2682 match value {
2683 "INGEST_RULES_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
2684 "INGEST_RULES_ERROR_RULE_NOT_FOUND" => Some(Self::RuleNotFound),
2685 _ => None,
2686 }
2687 }
2688}
2689pub mod internal_ingest_rules_service_client {
2691 #![allow(
2692 unused_variables,
2693 dead_code,
2694 missing_docs,
2695 clippy::wildcard_imports,
2696 clippy::let_unit_value,
2697 )]
2698 use tonic::codegen::*;
2699 use tonic::codegen::http::Uri;
2700 #[derive(Debug, Clone)]
2701 pub struct InternalIngestRulesServiceClient<T> {
2702 inner: tonic::client::Grpc<T>,
2703 }
2704 impl InternalIngestRulesServiceClient<tonic::transport::Channel> {
2705 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2707 where
2708 D: TryInto<tonic::transport::Endpoint>,
2709 D::Error: Into<StdError>,
2710 {
2711 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2712 Ok(Self::new(conn))
2713 }
2714 }
2715 impl<T> InternalIngestRulesServiceClient<T>
2716 where
2717 T: tonic::client::GrpcService<tonic::body::Body>,
2718 T::Error: Into<StdError>,
2719 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2720 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2721 {
2722 pub fn new(inner: T) -> Self {
2723 let inner = tonic::client::Grpc::new(inner);
2724 Self { inner }
2725 }
2726 pub fn with_origin(inner: T, origin: Uri) -> Self {
2727 let inner = tonic::client::Grpc::with_origin(inner, origin);
2728 Self { inner }
2729 }
2730 pub fn with_interceptor<F>(
2731 inner: T,
2732 interceptor: F,
2733 ) -> InternalIngestRulesServiceClient<InterceptedService<T, F>>
2734 where
2735 F: tonic::service::Interceptor,
2736 T::ResponseBody: Default,
2737 T: tonic::codegen::Service<
2738 http::Request<tonic::body::Body>,
2739 Response = http::Response<
2740 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2741 >,
2742 >,
2743 <T as tonic::codegen::Service<
2744 http::Request<tonic::body::Body>,
2745 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2746 {
2747 InternalIngestRulesServiceClient::new(
2748 InterceptedService::new(inner, interceptor),
2749 )
2750 }
2751 #[must_use]
2756 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2757 self.inner = self.inner.send_compressed(encoding);
2758 self
2759 }
2760 #[must_use]
2762 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2763 self.inner = self.inner.accept_compressed(encoding);
2764 self
2765 }
2766 #[must_use]
2770 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2771 self.inner = self.inner.max_decoding_message_size(limit);
2772 self
2773 }
2774 #[must_use]
2778 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2779 self.inner = self.inner.max_encoding_message_size(limit);
2780 self
2781 }
2782 pub async fn create_ingest_rule(
2783 &mut self,
2784 request: impl tonic::IntoRequest<super::CreateIngestRuleRequest>,
2785 ) -> std::result::Result<
2786 tonic::Response<super::CreateIngestRuleResponse>,
2787 tonic::Status,
2788 > {
2789 self.inner
2790 .ready()
2791 .await
2792 .map_err(|e| {
2793 tonic::Status::unknown(
2794 format!("Service was not ready: {}", e.into()),
2795 )
2796 })?;
2797 let codec = tonic::codec::ProstCodec::default();
2798 let path = http::uri::PathAndQuery::from_static(
2799 "/nominal.file_store.v1.InternalIngestRulesService/CreateIngestRule",
2800 );
2801 let mut req = request.into_request();
2802 req.extensions_mut()
2803 .insert(
2804 GrpcMethod::new(
2805 "nominal.file_store.v1.InternalIngestRulesService",
2806 "CreateIngestRule",
2807 ),
2808 );
2809 self.inner.unary(req, path, codec).await
2810 }
2811 pub async fn list_ingest_rules(
2812 &mut self,
2813 request: impl tonic::IntoRequest<super::ListIngestRulesRequest>,
2814 ) -> std::result::Result<
2815 tonic::Response<super::ListIngestRulesResponse>,
2816 tonic::Status,
2817 > {
2818 self.inner
2819 .ready()
2820 .await
2821 .map_err(|e| {
2822 tonic::Status::unknown(
2823 format!("Service was not ready: {}", e.into()),
2824 )
2825 })?;
2826 let codec = tonic::codec::ProstCodec::default();
2827 let path = http::uri::PathAndQuery::from_static(
2828 "/nominal.file_store.v1.InternalIngestRulesService/ListIngestRules",
2829 );
2830 let mut req = request.into_request();
2831 req.extensions_mut()
2832 .insert(
2833 GrpcMethod::new(
2834 "nominal.file_store.v1.InternalIngestRulesService",
2835 "ListIngestRules",
2836 ),
2837 );
2838 self.inner.unary(req, path, codec).await
2839 }
2840 pub async fn get_ingest_rule(
2841 &mut self,
2842 request: impl tonic::IntoRequest<super::GetIngestRuleRequest>,
2843 ) -> std::result::Result<
2844 tonic::Response<super::GetIngestRuleResponse>,
2845 tonic::Status,
2846 > {
2847 self.inner
2848 .ready()
2849 .await
2850 .map_err(|e| {
2851 tonic::Status::unknown(
2852 format!("Service was not ready: {}", e.into()),
2853 )
2854 })?;
2855 let codec = tonic::codec::ProstCodec::default();
2856 let path = http::uri::PathAndQuery::from_static(
2857 "/nominal.file_store.v1.InternalIngestRulesService/GetIngestRule",
2858 );
2859 let mut req = request.into_request();
2860 req.extensions_mut()
2861 .insert(
2862 GrpcMethod::new(
2863 "nominal.file_store.v1.InternalIngestRulesService",
2864 "GetIngestRule",
2865 ),
2866 );
2867 self.inner.unary(req, path, codec).await
2868 }
2869 pub async fn update_ingest_rule(
2870 &mut self,
2871 request: impl tonic::IntoRequest<super::UpdateIngestRuleRequest>,
2872 ) -> std::result::Result<
2873 tonic::Response<super::UpdateIngestRuleResponse>,
2874 tonic::Status,
2875 > {
2876 self.inner
2877 .ready()
2878 .await
2879 .map_err(|e| {
2880 tonic::Status::unknown(
2881 format!("Service was not ready: {}", e.into()),
2882 )
2883 })?;
2884 let codec = tonic::codec::ProstCodec::default();
2885 let path = http::uri::PathAndQuery::from_static(
2886 "/nominal.file_store.v1.InternalIngestRulesService/UpdateIngestRule",
2887 );
2888 let mut req = request.into_request();
2889 req.extensions_mut()
2890 .insert(
2891 GrpcMethod::new(
2892 "nominal.file_store.v1.InternalIngestRulesService",
2893 "UpdateIngestRule",
2894 ),
2895 );
2896 self.inner.unary(req, path, codec).await
2897 }
2898 pub async fn archive_ingest_rule(
2899 &mut self,
2900 request: impl tonic::IntoRequest<super::ArchiveIngestRuleRequest>,
2901 ) -> std::result::Result<
2902 tonic::Response<super::ArchiveIngestRuleResponse>,
2903 tonic::Status,
2904 > {
2905 self.inner
2906 .ready()
2907 .await
2908 .map_err(|e| {
2909 tonic::Status::unknown(
2910 format!("Service was not ready: {}", e.into()),
2911 )
2912 })?;
2913 let codec = tonic::codec::ProstCodec::default();
2914 let path = http::uri::PathAndQuery::from_static(
2915 "/nominal.file_store.v1.InternalIngestRulesService/ArchiveIngestRule",
2916 );
2917 let mut req = request.into_request();
2918 req.extensions_mut()
2919 .insert(
2920 GrpcMethod::new(
2921 "nominal.file_store.v1.InternalIngestRulesService",
2922 "ArchiveIngestRule",
2923 ),
2924 );
2925 self.inner.unary(req, path, codec).await
2926 }
2927 pub async fn unarchive_ingest_rule(
2928 &mut self,
2929 request: impl tonic::IntoRequest<super::UnarchiveIngestRuleRequest>,
2930 ) -> std::result::Result<
2931 tonic::Response<super::UnarchiveIngestRuleResponse>,
2932 tonic::Status,
2933 > {
2934 self.inner
2935 .ready()
2936 .await
2937 .map_err(|e| {
2938 tonic::Status::unknown(
2939 format!("Service was not ready: {}", e.into()),
2940 )
2941 })?;
2942 let codec = tonic::codec::ProstCodec::default();
2943 let path = http::uri::PathAndQuery::from_static(
2944 "/nominal.file_store.v1.InternalIngestRulesService/UnarchiveIngestRule",
2945 );
2946 let mut req = request.into_request();
2947 req.extensions_mut()
2948 .insert(
2949 GrpcMethod::new(
2950 "nominal.file_store.v1.InternalIngestRulesService",
2951 "UnarchiveIngestRule",
2952 ),
2953 );
2954 self.inner.unary(req, path, codec).await
2955 }
2956 }
2957}