@@ -60,30 +60,43 @@ impl SimplePluginCommand for Psql {
60
60
fn signature ( & self ) -> Signature {
61
61
Signature :: build ( "psql" )
62
62
. description ( "Execute PostgreSQL query." )
63
- . required ( "conn" , SyntaxShape :: String , "DB connection string" )
63
+ . named (
64
+ "conn" ,
65
+ SyntaxShape :: String ,
66
+ "DB connection string" ,
67
+ Some ( 'c' ) ,
68
+ )
64
69
. required ( "query" , SyntaxShape :: String , "SQL query" )
65
70
}
66
71
67
72
fn run (
68
73
& self ,
69
74
_plugin : & Self :: Plugin ,
70
- _engine : & nu_plugin:: EngineInterface ,
75
+ engine : & nu_plugin:: EngineInterface ,
71
76
call : & nu_plugin:: EvaluatedCall ,
72
77
_input : & Value ,
73
- ) -> Result < Value , nu_protocol:: LabeledError > {
74
- let args = & call. positional ;
75
- let conn = args[ 0 ] . as_str ( ) ?;
76
- let query = args[ 1 ] . as_str ( ) ?;
78
+ ) -> Result < Value , LabeledError > {
79
+ let query = call. positional [ 0 ] . as_str ( ) ?;
80
+ let conn = call
81
+ . get_flag_value ( "conn" )
82
+ . or_else ( || {
83
+ engine
84
+ . get_plugin_config ( )
85
+ . ok ( ) ??
86
+ . get_data_by_key ( "DATABASE_URL" )
87
+ } )
88
+ . or_else ( || engine. get_env_var ( "DATABASE_URL" ) . ok ( ) . flatten ( ) )
89
+ . ok_or_else ( || LabeledError :: new ( "missing both `--conn` and `DATABASE_URL`" ) ) ?;
77
90
78
- self . cmd ( conn, query, call. head )
91
+ self . cmd ( conn. as_str ( ) ? , query, call. head )
79
92
. map ( |table| Value :: list ( table, call. head ) )
80
93
. map_err ( Into :: into)
81
94
}
82
95
}
83
96
84
97
impl Plugin for Psql {
85
98
fn version ( & self ) -> String {
86
- "0.1 .0" . to_string ( )
99
+ "0.2 .0" . to_owned ( )
87
100
}
88
101
89
102
fn commands ( & self ) -> Vec < Box < dyn PluginCommand < Plugin = Self > > > {
0 commit comments