Skip to main content

vantage_aws/models/lambda/
version.rs

1use serde::{Deserialize, Serialize};
2use vantage_table::table::Table;
3
4use crate::AwsAccount;
5
6/// One Lambda function version from `ListVersionsByFunction`. We keep
7/// only the identifying fields here — the full FunctionConfiguration
8/// is huge and rarely useful in a list view.
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct Version {
11    #[serde(rename = "Version")]
12    pub version: String,
13    #[serde(rename = "FunctionName", default)]
14    pub function_name: String,
15    #[serde(rename = "FunctionArn", default)]
16    pub function_arn: String,
17    #[serde(rename = "Runtime", default)]
18    pub runtime: String,
19    #[serde(rename = "LastModified", default)]
20    pub last_modified: String,
21    #[serde(rename = "Description", default)]
22    pub description: String,
23}
24
25/// `ListVersionsByFunction` table. Requires `eq("FunctionName", "...")`.
26/// Used as the `versions` relation on [`super::function::Function`].
27///
28/// Lambda always returns at least `$LATEST`; published versions show
29/// up only after the function has been explicitly versioned.
30pub fn versions_table(aws: AwsAccount) -> Table<AwsAccount, Version> {
31    Table::new(
32        "restjson/Versions:lambda/GET /2015-03-31/functions/{FunctionName}/versions",
33        aws,
34    )
35    .with_id_column("Version")
36    .with_title_column_of::<String>("Runtime")
37    .with_column_of::<String>("FunctionArn")
38    .with_column_of::<String>("LastModified")
39    .with_column_of::<String>("Description")
40}