@@ -62,16 +62,43 @@ def __init__(
6262 @classmethod
6363 def from_env (cls ) -> 'SqlHelper' :
6464 """
65- Create a SqlHelper instance using KEY_VAULT_NAME and SECRET_NAME environment variables.
66- The secret must contain a SQL connection string. Uses DefaultAzureCredential for authentication.
65+ Create a SqlHelper instance from environment variables.
66+
67+ You can either pass the following set of variables, if you plan to use DefaultAzureCredential:
68+ - AZURE_CLIENT_ID
69+ - AZURE_CLIENT_SECRET
70+ - AZURE_TENANT_ID
71+
72+ Instead, if you plan to use the connection string directly, you can set:
73+ - SQL_SERVER
74+ - SQL_DATABASE
75+ - SQL_USERNAME
76+ - SQL_PASSWORD
6777 """
6878 key_vault_name = os .environ .get ("KEY_VAULT_NAME" )
6979 secret_name = os .environ .get ("SECRET_NAME" )
7080
71- if not key_vault_name or not secret_name :
72- raise ValueError ("KEY_VAULT_NAME and SECRET_NAME environment variables are required" )
81+ if key_vault_name and secret_name :
82+ return cls .from_key_vault (key_vault_name , secret_name )
83+
84+ client_id = os .environ .get ("AZURE_CLIENT_ID" )
85+ client_secret = os .environ .get ("AZURE_CLIENT_SECRET" )
86+ tenant_id = os .environ .get ("AZURE_TENANT_ID" )
87+ server = os .environ .get ("SQL_SERVER" )
88+ database = os .environ .get ("SQL_DATABASE" )
89+ username = os .environ .get ("SQL_USERNAME" )
90+ password = os .environ .get ("SQL_PASSWORD" )
7391
74- return cls .from_key_vault (key_vault_name , secret_name )
92+ if not any ([client_id , client_secret , tenant_id , server , database , username , password ]):
93+ raise ValueError ("You properly need to define environment variables." )
94+
95+ return cls (
96+ server = server ,
97+ database = database ,
98+ username = username ,
99+ password = password ,
100+ use_azure_credential = all ([client_id , client_secret , tenant_id ])
101+ )
75102
76103 @classmethod
77104 def from_key_vault (cls , vault_name : str , secret_name : str ) -> 'SqlHelper' :
0 commit comments