88from ..node_template_model import NodeTemplate
99from pymongo import IndexModel
1010from typing import Dict
11- from app .utils .encrypter import encrypter
11+ from app .utils .encrypter import get_encrypter
1212
1313class GraphTemplate (BaseDatabaseModel ):
1414 name : str = Field (..., description = "Name of the graph" )
@@ -53,11 +53,6 @@ def _validate_secret_value(cls, secret_value: str) -> None:
5353 if not re .match (url_safe_base64_pattern , secret_value ):
5454 raise ValueError ("Value must be URL-safe base64 encoded" )
5555
56- # Check if the string length is valid for base64 encoding
57- # Base64 encoding increases size by ~33%, and we need at least 12 bytes nonce
58- if len (secret_value ) % 4 != 0 :
59- raise ValueError ("Value length is not valid for base64 encoding" )
60-
6156 # Try to decode as base64 to ensure it's valid
6257 try :
6358 decoded = base64 .urlsafe_b64decode (secret_value )
@@ -68,15 +63,17 @@ def _validate_secret_value(cls, secret_value: str) -> None:
6863
6964
7065 def set_secrets (self , secrets : Dict [str , str ]) -> "GraphTemplate" :
71- self .secrets = {secret_name : encrypter .encrypt (secret_value ) for secret_name , secret_value in secrets .items ()}
66+ self .secrets = {secret_name : get_encrypter () .encrypt (secret_value ) for secret_name , secret_value in secrets .items ()}
7267 return self
7368
7469 def get_secrets (self ) -> Dict [str , str ]:
7570 if not self .secrets :
7671 return {}
77- return {secret_name : encrypter .decrypt (secret_value ) for secret_name , secret_value in self .secrets .items ()}
72+ return {secret_name : get_encrypter () .decrypt (secret_value ) for secret_name , secret_value in self .secrets .items ()}
7873
79- def get_secret (self , secret_name : str ) -> str :
74+ def get_secret (self , secret_name : str ) -> str | None :
8075 if not self .secrets :
81- return ""
82- return encrypter .decrypt (self .secrets [secret_name ])
76+ return None
77+ if secret_name not in self .secrets :
78+ return None
79+ return get_encrypter ().decrypt (self .secrets [secret_name ])
0 commit comments