fluvio_sc_schema/objects/
delete.rs1use std::fmt::Debug;
7
8use anyhow::Result;
9
10use fluvio_protocol::{Encoder, Decoder, Version};
11use fluvio_protocol::api::Request;
12
13use crate::{DeletableAdminSpec, TryEncodableFrom};
14use crate::Status;
15use crate::AdminPublicApiKey;
16use super::classic::{ClassicDeleteApiEnum, ClassicDecodingDelete};
17use super::{COMMON_VERSION, TypeBuffer};
18
19#[derive(Debug, Default, Encoder, Decoder)]
20pub struct DeleteRequest<S: DeletableAdminSpec> {
21 key: S::DeleteKey,
22 #[fluvio(min_version = 13)]
23 force: bool,
24}
25
26impl<S> DeleteRequest<S>
27where
28 S: DeletableAdminSpec,
29{
30 pub fn new(key: S::DeleteKey) -> Self {
31 Self { key, force: false }
32 }
33
34 pub fn with(key: S::DeleteKey, force: bool) -> Self {
35 Self { key, force }
36 }
37
38 pub fn key(self) -> S::DeleteKey {
39 self.key
40 }
41
42 pub fn is_force(&self) -> bool {
43 self.force
44 }
45}
46
47#[derive(Debug, Default, Encoder)]
49pub struct ObjectApiDeleteRequest(TypeBuffer);
50
51impl<S> TryEncodableFrom<DeleteRequest<S>> for ObjectApiDeleteRequest
52where
53 S: DeletableAdminSpec,
54{
55 fn try_encode_from(input: DeleteRequest<S>, version: Version) -> Result<Self> {
56 Ok(Self(TypeBuffer::encode::<S, _>(input, version)?))
57 }
58
59 fn downcast(&self) -> Result<Option<DeleteRequest<S>>> {
60 self.0.downcast::<S, _>()
61 }
62}
63
64impl Request for ObjectApiDeleteRequest {
65 const API_KEY: u16 = AdminPublicApiKey::Delete as u16;
66 const MIN_API_VERSION: i16 = 1; const DEFAULT_API_VERSION: i16 = COMMON_VERSION;
68 type Response = Status;
69}
70
71ClassicDeleteApiEnum!(DeleteRequest);
73ClassicDecodingDelete!(DeleteRequest);