@@ -6,14 +6,22 @@ use sqlx::PgConnection;
66use crate :: commands:: install:: update_paths;
77
88pub ( 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