vantage_aws/models/logs/
group.rs1use serde::{Deserialize, Serialize};
2use vantage_table::table::Table;
3
4use crate::{AwsAccount, eq};
5
6use super::event::{LogEvent, events_table};
7use super::stream::{LogStream, streams_table};
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct LogGroup {
13 #[serde(rename = "logGroupName")]
14 pub log_group_name: String,
15 #[serde(rename = "creationTime", default)]
16 pub creation_time: i64,
17 #[serde(rename = "storedBytes", default)]
18 pub stored_bytes: i64,
19}
20
21pub fn groups_table(aws: AwsAccount) -> Table<AwsAccount, LogGroup> {
42 Table::new("json1/logGroups:logs/Logs_20140328.DescribeLogGroups", aws)
43 .with_id_column("logGroupName")
44 .with_column_of::<i64>("creationTime")
45 .with_column_of::<i64>("storedBytes")
46 .with_many("events", "logGroupName", events_table)
47 .with_many("streams", "logGroupName", streams_table)
48}
49
50impl LogGroup {
51 pub fn ref_events(&self, aws: AwsAccount) -> Table<AwsAccount, LogEvent> {
53 let mut t = events_table(aws);
54 t.add_condition(eq("logGroupName", self.log_group_name.clone()));
55 t
56 }
57
58 pub fn ref_streams(&self, aws: AwsAccount) -> Table<AwsAccount, LogStream> {
60 let mut t = streams_table(aws);
61 t.add_condition(eq("logGroupName", self.log_group_name.clone()));
62 t
63 }
64}