use serde::{Deserialize, Serialize};
use vantage_table::table::Table;
use crate::{AwsAccount, eq};
use super::event::{LogEvent, events_table};
use super::stream::{LogStream, streams_table};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LogGroup {
#[serde(rename = "logGroupName")]
pub log_group_name: String,
#[serde(rename = "creationTime", default)]
pub creation_time: i64,
#[serde(rename = "storedBytes", default)]
pub stored_bytes: i64,
}
pub fn groups_table(aws: AwsAccount) -> Table<AwsAccount, LogGroup> {
Table::new("json1/logGroups:logs/Logs_20140328.DescribeLogGroups", aws)
.with_id_column("logGroupName")
.with_column_of::<i64>("creationTime")
.with_column_of::<i64>("storedBytes")
.with_many("events", "logGroupName", events_table)
.with_many("streams", "logGroupName", streams_table)
}
impl LogGroup {
pub fn ref_events(&self, aws: AwsAccount) -> Table<AwsAccount, LogEvent> {
let mut t = events_table(aws);
t.add_condition(eq("logGroupName", self.log_group_name.clone()));
t
}
pub fn ref_streams(&self, aws: AwsAccount) -> Table<AwsAccount, LogStream> {
let mut t = streams_table(aws);
t.add_condition(eq("logGroupName", self.log_group_name.clone()));
t
}
}