1- # src/rhosocial/activerecord/backend/impl/postgres/cli/named_query .py
2- """named-query subcommand - Adapter for shared CLI helper.
1+ # src/rhosocial/activerecord/backend/impl/postgres/cli/named_expression .py
2+ """named-expression subcommand - Adapter for shared CLI helper.
33
4- named-query requires connection arguments and output arguments.
4+ named-expression requires connection arguments and output arguments.
55"""
66
77from rhosocial .activerecord .backend .impl .postgres import PostgresBackend , AsyncPostgresBackend
1212
1313
1414def create_parser (subparsers ):
15- """Create the named-query subcommand parser.
15+ """Create the named-expression subcommand parser.
1616
17- Reuses the shared create_named_query_parser , passing a parent parser
17+ Reuses the shared create_named_expression_parser , passing a parent parser
1818 containing only connection and output arguments.
1919 """
20- from rhosocial .activerecord .backend .named_query .cli import create_named_query_parser
20+ from rhosocial .activerecord .backend .named_expression .cli import create_named_expression_parser
2121 local_parent = create_connection_parent_parser ()
22+ parser = create_named_expression_parser (subparsers , local_parent )
23+ parser .add_argument (
24+ "--dialect-version" ,
25+ default = None ,
26+ help = "PostgreSQL dialect version for capability probing (e.g., 15.0.0, 14.0.0)." ,
27+ )
28+ return parser
2229
23- nq_epilog = """Examples:
24- # Execute named query with connection parameters
25- %(prog)s myapp.queries.orders.high_value_pending --host localhost --database mydb --user postgres --password secret
26-
27- # Override parameters
28- %(prog)s myapp.queries.orders.high_value_pending --host localhost --database mydb \\
29- --param threshold=5000 --param days=7
30-
31- # Show signature without executing
32- %(prog)s myapp.queries.orders.high_value_pending --describe
33-
34- # Preview SQL without executing
35- %(prog)s myapp.queries.orders.orders_by_status \\
36- --database mydb --param status=pending --dry-run
3730
38- # List all named queries in a module
39- %(prog)s myapp.queries.orders --list
31+ def handle (args ):
32+ """Handle the named-expression subcommand."""
33+ from rhosocial .activerecord .backend .named_expression .cli import handle_named_expression as handle_ne
4034
41- # Using environment variables
42- export POSTGRES_HOST=localhost POSTGRES_DATABASE=mydb POSTGRES_USER=postgres POSTGRES_PASSWORD=secret
43- %(prog)s myapp.queries.orders --list
44- """
45- return create_named_query_parser (subparsers , local_parent , epilog = nq_epilog )
35+ provider = create_provider (args .output , ascii_borders = args .rich_ascii )
4636
37+ from rhosocial .activerecord .backend .impl .postgres .dialect import PostgresDialect
4738
48- def handle (args ):
49- """Handle the named-query subcommand."""
50- from rhosocial .activerecord .backend .named_query .cli import handle_named_query as handle_nq
39+ def _get_requested_version ():
40+ ver = getattr (args , "dialect_version" , None )
41+ if ver :
42+ return tuple (int (p ) for p in ver .split ("." ))
43+ return None
5144
52- provider = create_provider (args .output , ascii_borders = args .rich_ascii )
45+ def create_dialect ():
46+ return PostgresDialect (version = _get_requested_version ())
5347
5448 backend = None
5549
@@ -59,6 +53,9 @@ def backend_factory():
5953 backend = PostgresBackend (connection_config = config )
6054 backend .connect ()
6155 backend .introspect_and_adapt ()
56+ req_ver = _get_requested_version ()
57+ if req_ver :
58+ backend ._dialect .version = req_ver
6259 return backend
6360
6461 def get_dialect (b ):
@@ -91,7 +88,7 @@ async def disconnect_async():
9188 if async_backend and async_backend ._connection :
9289 await async_backend .disconnect ()
9390
94- handle_nq (
91+ handle_ne (
9592 args ,
9693 provider ,
9794 backend_factory = backend_factory ,
@@ -102,14 +99,16 @@ async def disconnect_async():
10299 get_dialect_async = get_dialect_async ,
103100 execute_query_async = execute_query_async ,
104101 disconnect_async = disconnect_async ,
102+ create_dialect = create_dialect ,
105103 )
106104 return
107105
108- handle_nq (
106+ handle_ne (
109107 args ,
110108 provider ,
111109 backend_factory = backend_factory ,
112110 get_dialect = get_dialect ,
113111 execute_query = execute_query ,
114112 disconnect = disconnect ,
113+ create_dialect = create_dialect ,
115114 )
0 commit comments