fakecloud_timestream/
shared.rs1use fakecloud_core::service::AwsRequest;
7
8pub fn now_epoch() -> f64 {
12 chrono::Utc::now().timestamp_millis() as f64 / 1000.0
13}
14
15pub fn database_arn(region: &str, account: &str, name: &str) -> String {
18 format!("arn:aws:timestream:{region}:{account}:database/{name}")
19}
20
21pub fn table_arn(region: &str, account: &str, database: &str, table: &str) -> String {
24 format!("arn:aws:timestream:{region}:{account}:database/{database}/table/{table}")
25}
26
27pub fn scheduled_query_arn(region: &str, account: &str, name: &str, suffix: &str) -> String {
30 format!("arn:aws:timestream:{region}:{account}:scheduled-query/{name}-{suffix}")
31}
32
33pub fn new_id() -> String {
36 uuid::Uuid::new_v4().simple().to_string().to_uppercase()
37}
38
39pub fn table_key(database: &str, table: &str) -> String {
43 format!("{database}\u{1}{table}")
44}
45
46pub fn endpoint_address(req: &AwsRequest) -> String {
52 req.headers
53 .get("host")
54 .and_then(|v| v.to_str().ok())
55 .filter(|h| !h.is_empty())
56 .map(|h| h.to_string())
57 .unwrap_or_else(|| format!("ingest.timestream.{}.amazonaws.com", req.region))
58}
59
60#[cfg(test)]
61mod tests {
62 use super::*;
63
64 #[test]
65 fn database_arn_shape() {
66 assert_eq!(
67 database_arn("us-east-1", "000000000000", "metrics"),
68 "arn:aws:timestream:us-east-1:000000000000:database/metrics"
69 );
70 }
71
72 #[test]
73 fn table_arn_shape() {
74 assert_eq!(
75 table_arn("us-east-1", "000000000000", "metrics", "cpu"),
76 "arn:aws:timestream:us-east-1:000000000000:database/metrics/table/cpu"
77 );
78 }
79
80 #[test]
81 fn table_key_round_trips() {
82 let k = table_key("metrics", "cpu");
83 assert_eq!(k.split_once('\u{1}'), Some(("metrics", "cpu")));
84 }
85}