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}
20
21impl QueueBinding {
22 pub fn sqs(queue_url: impl Into<BindingValue<String>>) -> Self {
23 Self::Sqs(SqsQueueBinding {
24 queue_url: queue_url.into(),
25 })
26 }
27
28 pub fn pubsub(
29 topic: impl Into<BindingValue<String>>,
30 subscription: impl Into<BindingValue<String>>,
31 ) -> Self {
32 Self::Pubsub(PubSubQueueBinding {
33 topic: topic.into(),
34 subscription: subscription.into(),
35 })
36 }
37
38 pub fn service_bus(
39 namespace: impl Into<BindingValue<String>>,
40 queue_name: impl Into<BindingValue<String>>,
41 ) -> Self {
42 Self::Servicebus(ServiceBusQueueBinding {
43 namespace: namespace.into(),
44 queue_name: queue_name.into(),
45 })
46 }
47}
48
49#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
51#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
52#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
53#[serde(rename_all = "camelCase")]
54pub struct SqsQueueBinding {
55 pub queue_url: BindingValue<String>,
57}
58
59#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
61#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
62#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
63#[serde(rename_all = "camelCase")]
64pub struct PubSubQueueBinding {
65 pub topic: BindingValue<String>,
67 pub subscription: BindingValue<String>,
69}
70
71#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
73#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
74#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
75#[serde(rename_all = "camelCase")]
76pub struct ServiceBusQueueBinding {
77 pub namespace: BindingValue<String>,
79 pub queue_name: BindingValue<String>,
81}