spring_batch_rs/item/logger.rs
1use std::fmt::Debug;
2
3use log::info;
4
5use crate::core::item::{ItemWriter, ItemWriterResult};
6
7/// A simple item writer that logs the items using the `log` crate.
8#[derive(Default)]
9pub struct LoggerWriter;
10
11impl<T: Debug> ItemWriter<T> for LoggerWriter {
12 /// Writes the items to the log.
13 ///
14 /// # Arguments
15 ///
16 /// * `items` - The items to be written.
17 ///
18 /// # Returns
19 ///
20 /// Returns `Ok(())` if the items were successfully written to the log.
21 ///
22 /// # Examples
23 ///
24 /// ```
25 /// use spring_batch_rs::item::logger::LoggerWriter;
26 /// use spring_batch_rs::core::item::{ItemWriter, ItemWriterResult};
27 ///
28 /// let writer = LoggerWriter::default();
29 /// let items = vec![1, 2, 3];
30 /// let result: ItemWriterResult = writer.write(&items);
31 /// assert!(result.is_ok());
32 /// ```
33 fn write(&self, items: &[T]) -> ItemWriterResult {
34 items.iter().for_each(|item| info!("Record:{:?}", item));
35 Ok(())
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_write() {
45 let writer = LoggerWriter::default();
46 let items = vec![1, 2, 3];
47 let result = writer.write(&items);
48 assert!(result.is_ok());
49 }
50}