Skip to content

Commit c7a8198

Browse files
committed
show default version
1 parent d5e4685 commit c7a8198

1 file changed

Lines changed: 34 additions & 6 deletions

File tree

cli/src/commands/list.rs

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,22 @@ use sqlx::PgConnection;
66
use crate::commands::install::update_paths;
77

88
pub(crate) async fn list(conn: &mut PgConnection) -> anyhow::Result<()> {
9+
let available_extension_versions = available_extensions_versions(conn).await?;
910
let available_extensions = available_extensions(conn).await?;
1011

11-
for (extension_name, versions) in available_extensions {
12+
for (extension_name, versions) in available_extension_versions {
13+
let default_version = available_extensions.get(&extension_name);
14+
1215
println!("{extension_name}");
1316
println!(" available versions:");
14-
for version in versions {
15-
println!(" {version}");
17+
for version in &versions {
18+
print!(" {version}");
19+
if Some(version) == default_version {
20+
print!(" (default)");
21+
}
22+
println!();
1623
}
24+
1725
println!(" available update paths:");
1826
let update_paths = update_paths(conn, &extension_name).await?;
1927
if update_paths.is_empty() {
@@ -30,15 +38,15 @@ pub(crate) async fn list(conn: &mut PgConnection) -> anyhow::Result<()> {
3038
}
3139

3240
#[derive(sqlx::FromRow)]
33-
struct ExtensionRow {
41+
struct AvailableExtensionVersion {
3442
name: String,
3543
version: String,
3644
}
3745

38-
async fn available_extensions(
46+
async fn available_extensions_versions(
3947
conn: &mut PgConnection,
4048
) -> anyhow::Result<HashMap<String, Vec<String>>> {
41-
let mut rows = sqlx::query_as::<_, ExtensionRow>(
49+
let mut rows = sqlx::query_as::<_, AvailableExtensionVersion>(
4250
"select name, version from pgtle.available_extension_versions()",
4351
)
4452
.fetch(conn);
@@ -51,3 +59,23 @@ async fn available_extensions(
5159

5260
Ok(available_extensions)
5361
}
62+
63+
#[derive(sqlx::FromRow)]
64+
struct AvailableExtension {
65+
name: String,
66+
default_version: String,
67+
}
68+
69+
async fn available_extensions(conn: &mut PgConnection) -> anyhow::Result<HashMap<String, String>> {
70+
let mut rows = sqlx::query_as::<_, AvailableExtension>(
71+
"select name, default_version from pgtle.available_extensions()",
72+
)
73+
.fetch(conn);
74+
75+
let mut extensions = HashMap::new();
76+
while let Some(row) = rows.try_next().await? {
77+
extensions.insert(row.name, row.default_version);
78+
}
79+
80+
Ok(extensions)
81+
}

0 commit comments

Comments
 (0)