Skip to main content

backbone_bucket/application/triggers/
file_lock_triggers.rs

1//! FileLock trigger handlers
2//!
3//! Auto-generated by backbone-cli. Do not edit manually.
4
5use std::sync::Arc;
6use async_trait::async_trait;
7use backbone_core::trigger::{
8    ActionExecutor, TriggerContext, TriggerContextMut, TriggerEvent, TriggerHandler, TriggerRegistry,
9};
10
11use crate::domain::entity::FileLock;
12
13pub type FileLockTriggerEvent      = TriggerEvent;
14pub type FileLockTriggerContext    = TriggerContext<FileLock>;
15pub type FileLockTriggerContextMut = TriggerContextMut<FileLock>;
16pub type FileLockActionExecutor    = ActionExecutor;
17pub type FileLockTriggerRegistry   = TriggerRegistry<FileLock>;
18pub type FileLockTriggerHandlerObj =
19    dyn TriggerHandler<TriggerContext<FileLock>, TriggerEvent>;
20
21// Lifecycle trigger handlers
22
23/// AfterCreate handler
24pub struct FileLockAfterCreateHandler1 {
25    /// Event publisher for emitting domain events
26    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
27    /// Action executor for side effects
28    pub action_executor: Option<Arc<FileLockActionExecutor>>,
29}
30
31impl FileLockAfterCreateHandler1 {
32    pub fn new() -> Self {
33        Self {
34            event_publisher: None,
35            action_executor: None,
36        }
37    }
38
39    pub fn with_event_publisher(mut self, publisher: Arc<crate::domain::event::FileLockEventPublisher>) -> Self {
40        self.event_publisher = Some(publisher);
41        self
42    }
43
44    pub fn with_action_executor(mut self, executor: Arc<FileLockActionExecutor>) -> Self {
45        self.action_executor = Some(executor);
46        self
47    }
48}
49
50#[async_trait]
51impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockAfterCreateHandler1 {
52    fn events(&self) -> Vec<FileLockTriggerEvent> {
53        vec![TriggerEvent::AfterCreate]
54    }
55
56    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
57        let _ = &ctx; // Mark as used to avoid unused warning
58        tracing::info!("Trigger executed for entity: {:?}", ctx.entity.id);
59        // Emit filelockcreatedevent event
60        if let Some(publisher) = &self.event_publisher {
61            publisher.publish_created(ctx.entity.clone(), ctx.user_id.clone()).await?;
62        }
63        Ok(())
64    }
65}
66
67/// AfterCreate handler
68pub struct FileLockAfterCreateHandler2 {
69    /// Event publisher for emitting domain events
70    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
71    /// Action executor for side effects
72    pub action_executor: Option<Arc<FileLockActionExecutor>>,
73}
74
75impl FileLockAfterCreateHandler2 {
76    pub fn new() -> Self {
77        Self {
78            event_publisher: None,
79            action_executor: None,
80        }
81    }
82
83    pub fn with_event_publisher(mut self, publisher: Arc<crate::domain::event::FileLockEventPublisher>) -> Self {
84        self.event_publisher = Some(publisher);
85        self
86    }
87
88    pub fn with_action_executor(mut self, executor: Arc<FileLockActionExecutor>) -> Self {
89        self.action_executor = Some(executor);
90        self
91    }
92}
93
94#[async_trait]
95impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockAfterCreateHandler2 {
96    fn events(&self) -> Vec<FileLockTriggerEvent> {
97        vec![TriggerEvent::AfterCreate]
98    }
99
100    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
101        let _ = &ctx; // Mark as used to avoid unused warning
102        tracing::info!("Trigger executed for entity: {:?}", ctx.entity.id);
103        Ok(())
104    }
105}
106
107/// AfterCreate handler
108pub struct FileLockAfterCreateHandler3 {
109    /// Event publisher for emitting domain events
110    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
111    /// Action executor for side effects
112    pub action_executor: Option<Arc<FileLockActionExecutor>>,
113}
114
115impl FileLockAfterCreateHandler3 {
116    pub fn new() -> Self {
117        Self {
118            event_publisher: None,
119            action_executor: None,
120        }
121    }
122
123    pub fn with_event_publisher(mut self, publisher: Arc<crate::domain::event::FileLockEventPublisher>) -> Self {
124        self.event_publisher = Some(publisher);
125        self
126    }
127
128    pub fn with_action_executor(mut self, executor: Arc<FileLockActionExecutor>) -> Self {
129        self.action_executor = Some(executor);
130        self
131    }
132}
133
134#[async_trait]
135impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockAfterCreateHandler3 {
136    fn events(&self) -> Vec<FileLockTriggerEvent> {
137        vec![TriggerEvent::AfterCreate]
138    }
139
140    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
141        let _ = &ctx; // Mark as used to avoid unused warning
142        // Unknown action type 'update': filelock
143        Ok(())
144    }
145}
146
147/// AfterCreate handler
148pub struct FileLockAfterCreateHandler4 {
149    /// Event publisher for emitting domain events
150    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
151    /// Action executor for side effects
152    pub action_executor: Option<Arc<FileLockActionExecutor>>,
153}
154
155impl FileLockAfterCreateHandler4 {
156    pub fn new() -> Self {
157        Self {
158            event_publisher: None,
159            action_executor: None,
160        }
161    }
162
163    pub fn with_event_publisher(mut self, publisher: Arc<crate::domain::event::FileLockEventPublisher>) -> Self {
164        self.event_publisher = Some(publisher);
165        self
166    }
167
168    pub fn with_action_executor(mut self, executor: Arc<FileLockActionExecutor>) -> Self {
169        self.action_executor = Some(executor);
170        self
171    }
172}
173
174#[async_trait]
175impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockAfterCreateHandler4 {
176    fn events(&self) -> Vec<FileLockTriggerEvent> {
177        vec![TriggerEvent::AfterCreate]
178    }
179
180    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
181        let _ = &ctx; // Mark as used to avoid unused warning
182        // Send notification
183        if let Some(executor) = &self.action_executor {
184            executor.notify(ctx, "default").await?;
185        }
186        Ok(())
187    }
188}
189
190// State machine trigger handlers
191
192/// Handler for entering active state
193pub struct FileLockOnEnterActiveHandler {
194    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
195}
196
197impl FileLockOnEnterActiveHandler {
198    pub fn new() -> Self {
199        Self {
200            event_publisher: None,
201        }
202    }
203}
204
205#[async_trait]
206impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockOnEnterActiveHandler {
207    fn events(&self) -> Vec<FileLockTriggerEvent> {
208        vec![TriggerEvent::OnEnterState("active".to_string())]
209    }
210
211    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
212        let _ = &ctx; // Mark as used to avoid unused warning
213        tracing::info!("Trigger executed for entity: {:?}", ctx.entity.id);
214        // Emit filelockacquiredevent event
215        if let Some(_publisher) = &self.event_publisher {
216            // Custom event: filelockacquiredevent
217        }
218        Ok(())
219    }
220}
221
222/// Handler for entering expired state
223pub struct FileLockOnEnterExpiredHandler {
224    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
225}
226
227impl FileLockOnEnterExpiredHandler {
228    pub fn new() -> Self {
229        Self {
230            event_publisher: None,
231        }
232    }
233}
234
235#[async_trait]
236impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockOnEnterExpiredHandler {
237    fn events(&self) -> Vec<FileLockTriggerEvent> {
238        vec![TriggerEvent::OnEnterState("expired".to_string())]
239    }
240
241    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
242        let _ = &ctx; // Mark as used to avoid unused warning
243        tracing::info!("Trigger executed for entity: {:?}", ctx.entity.id);
244        // Emit filelockexpiredevent event
245        if let Some(_publisher) = &self.event_publisher {
246            // Custom event: filelockexpiredevent
247        }
248        Ok(())
249    }
250}
251
252/// Handler for entering released state
253pub struct FileLockOnEnterReleasedHandler {
254    pub event_publisher: Option<Arc<crate::domain::event::FileLockEventPublisher>>,
255}
256
257impl FileLockOnEnterReleasedHandler {
258    pub fn new() -> Self {
259        Self {
260            event_publisher: None,
261        }
262    }
263}
264
265#[async_trait]
266impl TriggerHandler<FileLockTriggerContext, FileLockTriggerEvent> for FileLockOnEnterReleasedHandler {
267    fn events(&self) -> Vec<FileLockTriggerEvent> {
268        vec![TriggerEvent::OnEnterState("released".to_string())]
269    }
270
271    async fn handle(&self, ctx: &FileLockTriggerContext) -> anyhow::Result<()> {
272        let _ = &ctx; // Mark as used to avoid unused warning
273        tracing::info!("Trigger executed for entity: {:?}", ctx.entity.id);
274        // Emit filelockreleasedevent event
275        if let Some(_publisher) = &self.event_publisher {
276            // Custom event: filelockreleasedevent
277        }
278        Ok(())
279    }
280}
281
282/// Create a default registry pre-populated with all handlers for FileLock.
283pub fn file_lock_trigger_registry() -> FileLockTriggerRegistry {
284    TriggerRegistry::build(|r| {
285        r.register(Arc::new(FileLockAfterCreateHandler1::new()));
286        r.register(Arc::new(FileLockAfterCreateHandler2::new()));
287        r.register(Arc::new(FileLockAfterCreateHandler3::new()));
288        r.register(Arc::new(FileLockAfterCreateHandler4::new()));
289        r.register(Arc::new(FileLockOnEnterActiveHandler::new()));
290        r.register(Arc::new(FileLockOnEnterExpiredHandler::new()));
291        r.register(Arc::new(FileLockOnEnterReleasedHandler::new()));
292    })
293}
294