alien_core/bindings/
queue.rs1use super::BindingValue;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
7#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
8#[serde(tag = "service", rename_all = "lowercase")]
9pub enum QueueBinding {
10 #[serde(rename_all = "camelCase")]
12 Sqs(SqsQueueBinding),
13 #[serde(rename_all = "camelCase")]
15 Pubsub(PubSubQueueBinding),
16 #[serde(rename_all = "camelCase")]
18 Servicebus(ServiceBusQueueBinding),
19 #[serde(rename = "local-queue", rename_all = "camelCase")]
21 Local(LocalQueueBinding),
22}
23
24impl QueueBinding {
25 pub fn sqs(queue_url: impl Into<BindingValue<String>>) -> Self {
26 Self::Sqs(SqsQueueBinding {
27 queue_url: queue_url.into(),
28 })
29 }
30
31 pub fn pubsub(
32 topic: impl Into<BindingValue<String>>,
33 subscription: impl Into<BindingValue<String>>,
34 ) -> Self {
35 Self::Pubsub(PubSubQueueBinding {
36 topic: topic.into(),
37 subscription: subscription.into(),
38 })
39 }
40
41 pub fn service_bus(
42 namespace: impl Into<BindingValue<String>>,
43 queue_name: impl Into<BindingValue<String>>,
44 ) -> Self {
45 Self::Servicebus(ServiceBusQueueBinding {
46 namespace: namespace.into(),
47 queue_name: queue_name.into(),
48 })
49 }
50
51 pub fn local(queue_path: impl Into<BindingValue<String>>) -> Self {
52 Self::Local(LocalQueueBinding {
53 queue_path: queue_path.into(),
54 })
55 }
56}
57
58#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
60#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
61#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
62#[serde(rename_all = "camelCase")]
63pub struct SqsQueueBinding {
64 pub queue_url: BindingValue<String>,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
70#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
71#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
72#[serde(rename_all = "camelCase")]
73pub struct PubSubQueueBinding {
74 pub topic: BindingValue<String>,
76 pub subscription: BindingValue<String>,
78}
79
80#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
82#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
83#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
84#[serde(rename_all = "camelCase")]
85pub struct ServiceBusQueueBinding {
86 pub namespace: BindingValue<String>,
88 pub queue_name: BindingValue<String>,
90}
91
92#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
95#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
96#[serde(rename_all = "camelCase")]
97pub struct LocalQueueBinding {
98 pub queue_path: BindingValue<String>,
100}