From 917a848dbad0704fd062bcfdee2877b5f1a6f997 Mon Sep 17 00:00:00 2001 From: gozineb Date: Tue, 7 Nov 2023 16:15:11 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20add=20secrets=20functio?= =?UTF-8?q?ns=20to=20repository?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../external_api_secret/__init__.py | 3 +++ .../external_api_secret/create_secret.py | 21 +++++++++++++++++++ .../external_api_secret/delete_secret.py | 18 ++++++++++++++++ .../external_api_secret/read_secret.py | 20 ++++++++++++++++++ .../repository/external_api_secret/utils.py | 5 +++++ 5 files changed, 67 insertions(+) create mode 100644 backend/repository/external_api_secret/__init__.py create mode 100644 backend/repository/external_api_secret/create_secret.py create mode 100644 backend/repository/external_api_secret/delete_secret.py create mode 100644 backend/repository/external_api_secret/read_secret.py create mode 100644 backend/repository/external_api_secret/utils.py diff --git a/backend/repository/external_api_secret/__init__.py b/backend/repository/external_api_secret/__init__.py new file mode 100644 index 000000000000..3c7e3b44617b --- /dev/null +++ b/backend/repository/external_api_secret/__init__.py @@ -0,0 +1,3 @@ +from .create_secret import create_secret +from .delete_secret import delete_secret +from .read_secret import read_secret diff --git a/backend/repository/external_api_secret/create_secret.py b/backend/repository/external_api_secret/create_secret.py new file mode 100644 index 000000000000..0b902d13911d --- /dev/null +++ b/backend/repository/external_api_secret/create_secret.py @@ -0,0 +1,21 @@ +from uuid import UUID + +from models import get_supabase_client +from utils import build_secret_unique_name + + +def create_secret( + user_id: UUID, brain_id: UUID, secret_name: str, secret_value +) -> UUID | None: + supabase_client = get_supabase_client() + response = supabase_client.rpc( + "insert_secret", + { + "name": build_secret_unique_name( + user_id=user_id, brain_id=brain_id, secret_name=secret_name + ), + "secret": secret_value, + }, + ).execute() + + return response.data diff --git a/backend/repository/external_api_secret/delete_secret.py b/backend/repository/external_api_secret/delete_secret.py new file mode 100644 index 000000000000..74a93160444c --- /dev/null +++ b/backend/repository/external_api_secret/delete_secret.py @@ -0,0 +1,18 @@ +from uuid import UUID + +from models import get_supabase_client +from utils import build_secret_unique_name + + +def delete_secret(user_id: UUID, brain_id: UUID, secret_name: str) -> bool: + supabase_client = get_supabase_client() + response = supabase_client.rpc( + "delete_secret", + { + "name": build_secret_unique_name( + user_id=user_id, brain_id=brain_id, secret_name=secret_name + ), + }, + ).execute() + + return response.data diff --git a/backend/repository/external_api_secret/read_secret.py b/backend/repository/external_api_secret/read_secret.py new file mode 100644 index 000000000000..9fa3a648111d --- /dev/null +++ b/backend/repository/external_api_secret/read_secret.py @@ -0,0 +1,20 @@ +from uuid import UUID + +from models import get_supabase_client +from utils import build_secret_unique_name + + +def read_secret( + user_id: UUID, brain_id: UUID, secret_name: str, secret_value +) -> UUID | None: + supabase_client = get_supabase_client() + response = supabase_client.rpc( + "read_secret", + { + "secret_name": build_secret_unique_name( + user_id=user_id, brain_id=brain_id, secret_name=secret_name + ), + }, + ).execute() + + return response.data diff --git a/backend/repository/external_api_secret/utils.py b/backend/repository/external_api_secret/utils.py new file mode 100644 index 000000000000..8db943a1e969 --- /dev/null +++ b/backend/repository/external_api_secret/utils.py @@ -0,0 +1,5 @@ +from uuid import UUID + + +def build_secret_unique_name(user_id: UUID, brain_id: UUID, secret_name: str): + return f"{user_id}-{brain_id}-{secret_name}"