@@ -7,6 +7,7 @@ use snafu::{ResultExt, Snafu};
77use crate :: {
88 commons:: networking:: HostName ,
99 databases:: {
10+ TemplatingMechanism ,
1011 drivers:: {
1112 celery:: { CeleryDatabaseConnection , CeleryDatabaseConnectionDetails } ,
1213 jdbc:: { JDBCDatabaseConnection , JDBCDatabaseConnectionDetails } ,
@@ -51,9 +52,10 @@ impl PostgresqlConnection {
5152}
5253
5354impl JDBCDatabaseConnection for PostgresqlConnection {
54- fn jdbc_connection_details (
55+ fn jdbc_connection_details_with_templating (
5556 & self ,
5657 unique_database_name : & str ,
58+ _templating_mechanism : & TemplatingMechanism ,
5759 ) -> Result < JDBCDatabaseConnectionDetails , crate :: databases:: Error > {
5860 let Self {
5961 host,
@@ -81,9 +83,10 @@ impl JDBCDatabaseConnection for PostgresqlConnection {
8183}
8284
8385impl SQLAlchemyDatabaseConnection for PostgresqlConnection {
84- fn sqlalchemy_connection_details (
86+ fn sqlalchemy_connection_details_with_templating (
8587 & self ,
8688 unique_database_name : & str ,
89+ templating_mechanism : & TemplatingMechanism ,
8790 ) -> SQLAlchemyDatabaseConnectionDetails {
8891 let Self {
8992 host,
@@ -94,13 +97,18 @@ impl SQLAlchemyDatabaseConnection for PostgresqlConnection {
9497 } = self ;
9598 let ( username_env, password_env) =
9699 username_and_password_envs ( unique_database_name, credentials_secret) ;
97-
98- let uri_template = format ! (
99- "postgresql+psycopg2://${{env:{username_env_name}}}:${{env:{password_env_name}}}@{host}:{port}/{database}{parameters}" ,
100- username_env_name = username_env. name,
101- password_env_name = password_env. name,
102- parameters = connection_parameters_as_url_query_parameters( parameters)
103- ) ;
100+ let username_env_name = & username_env. name ;
101+ let password_env_name = & password_env. name ;
102+ let parameters = connection_parameters_as_url_query_parameters ( parameters) ;
103+
104+ let uri_template = match templating_mechanism {
105+ TemplatingMechanism :: ConfigUtils => format ! (
106+ "postgresql+psycopg2://${{env:{username_env_name}}}:${{env:{password_env_name}}}@{host}:{port}/{database}{parameters}" ,
107+ ) ,
108+ TemplatingMechanism :: BashEnvSubstitution => format ! (
109+ "postgresql+psycopg2://${{{username_env_name}}}:${{{password_env_name}}}@{host}:{port}/{database}{parameters}" ,
110+ ) ,
111+ } ;
104112 SQLAlchemyDatabaseConnectionDetails {
105113 uri_template,
106114 username_env : Some ( username_env) ,
@@ -111,9 +119,10 @@ impl SQLAlchemyDatabaseConnection for PostgresqlConnection {
111119}
112120
113121impl CeleryDatabaseConnection for PostgresqlConnection {
114- fn celery_connection_details (
122+ fn celery_connection_details_with_templating (
115123 & self ,
116124 unique_database_name : & str ,
125+ templating_mechanism : & TemplatingMechanism ,
117126 ) -> CeleryDatabaseConnectionDetails {
118127 let Self {
119128 host,
@@ -124,13 +133,18 @@ impl CeleryDatabaseConnection for PostgresqlConnection {
124133 } = self ;
125134 let ( username_env, password_env) =
126135 username_and_password_envs ( unique_database_name, credentials_secret) ;
127-
128- let uri_template = format ! (
129- "db+postgresql://${{env:{username_env_name}}}:${{env:{password_env_name}}}@{host}:{port}/{database}{parameters}" ,
130- username_env_name = username_env. name,
131- password_env_name = password_env. name,
132- parameters = connection_parameters_as_url_query_parameters( parameters)
133- ) ;
136+ let username_env_name = & username_env. name ;
137+ let password_env_name = & password_env. name ;
138+ let parameters = connection_parameters_as_url_query_parameters ( parameters) ;
139+
140+ let uri_template = match templating_mechanism {
141+ TemplatingMechanism :: ConfigUtils => format ! (
142+ "db+postgresql://${{env:{username_env_name}}}:${{env:{password_env_name}}}@{host}:{port}/{database}{parameters}" ,
143+ ) ,
144+ TemplatingMechanism :: BashEnvSubstitution => format ! (
145+ "db+postgresql://${{{username_env_name}}}:${{{password_env_name}}}@{host}:{port}/{database}{parameters}" ,
146+ ) ,
147+ } ;
134148 CeleryDatabaseConnectionDetails {
135149 uri_template,
136150 username_env : Some ( username_env) ,
0 commit comments