ecad_processor/utils/
filename.rs

1use chrono::{Datelike, Local};
2use std::path::PathBuf;
3
4/// Generate default Parquet filename with format: ecad-weather-{YYMMDD}.parquet
5pub fn generate_default_parquet_filename() -> PathBuf {
6    let now = Local::now();
7    let year = now.year() % 100; // Get last 2 digits of year
8    let month = now.month();
9    let day = now.day();
10
11    let filename = format!("ecad-weather-{:02}{:02}{:02}.parquet", year, month, day);
12    PathBuf::from("output").join(filename)
13}
14
15/// Generate default unified Parquet filename with format: ecad-weather-unified-{YYMMDD}.parquet
16pub fn generate_default_unified_parquet_filename() -> PathBuf {
17    let now = Local::now();
18    let year = now.year() % 100; // Get last 2 digits of year
19    let month = now.month();
20    let day = now.day();
21
22    let filename = format!(
23        "ecad-weather-unified-{:02}{:02}{:02}.parquet",
24        year, month, day
25    );
26    PathBuf::from("output").join(filename)
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32
33    #[test]
34    fn test_generate_default_parquet_filename() {
35        let filename = generate_default_parquet_filename();
36        let filename_str = filename.to_string_lossy();
37
38        // Should contain the expected pattern
39        assert!(filename_str.contains("ecad-weather-"));
40        assert!(filename_str.ends_with(".parquet"));
41        assert!(filename_str.starts_with("output/"));
42
43        // Should be exactly 29 characters: "output/ecad-weather-YYMMDD.parquet"
44        // But let's just check the structure
45        let parts: Vec<&str> = filename_str.split('/').collect();
46        assert_eq!(parts.len(), 2);
47        assert_eq!(parts[0], "output");
48
49        let file_part = parts[1];
50        assert!(file_part.starts_with("ecad-weather-"));
51        assert!(file_part.ends_with(".parquet"));
52    }
53
54    #[test]
55    fn test_generate_default_unified_parquet_filename() {
56        let filename = generate_default_unified_parquet_filename();
57        let filename_str = filename.to_string_lossy();
58
59        assert!(filename_str.contains("ecad-weather-unified-"));
60        assert!(filename_str.ends_with(".parquet"));
61        assert!(filename_str.starts_with("output/"));
62    }
63}