feat: Integrate Supabase for data management, replacing local PostgreSQL. Implement Supabase service for CRUD operations on patients and scenarios, and update application logic to utilize Supabase API. Add Dockerfile for containerization and .dockerignore for build optimization.
3a338e5
| """ | |
| Supabase REST API ์ค์ | |
| """ | |
| import os | |
| from dotenv import load_dotenv | |
| try: | |
| from supabase import Client, create_client | |
| except ImportError: | |
| create_client = None | |
| Client = None | |
| # ํ๊ฒฝ ๋ณ์ ๋ก๋ | |
| load_dotenv() | |
| # Supabase ์ฐ๊ฒฐ ์ค์ | |
| SUPABASE_URL = os.getenv("SUPABASE_URL") | |
| SUPABASE_ANON_KEY = os.getenv("SUPABASE_ANON_KEY") | |
| # SUPABASE_KEY๋ ์ง์ (ํธํ์ฑ) | |
| if not SUPABASE_ANON_KEY: | |
| SUPABASE_ANON_KEY = os.getenv("SUPABASE_KEY") | |
| def check_supabase_health() -> bool: | |
| """ | |
| Supabase ์ฐ๊ฒฐ ์ํ ํ์ธ | |
| Returns: | |
| bool: Supabase ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ | |
| """ | |
| if not SUPABASE_URL: | |
| return False | |
| try: | |
| import requests | |
| # ์ฌ๋ฌ ์๋ํฌ์ธํธ ์๋ | |
| health_endpoints = [ | |
| "/rest/v1/", | |
| "/auth/v1/health", | |
| "/health" | |
| ] | |
| for endpoint in health_endpoints: | |
| try: | |
| health_url = f"{SUPABASE_URL}{endpoint}" | |
| response = requests.get(health_url, timeout=3) | |
| if response.status_code in [200, 301, 302, 404]: | |
| print(f"โ Supabase ์ฐ๊ฒฐ ํ์ธ: {endpoint}") | |
| return True | |
| except Exception: | |
| continue | |
| return False | |
| except Exception as e: | |
| print(f"โ ๏ธ Supabase ํฌ์ค์ฒดํฌ ์คํจ: {e}") | |
| return False | |
| # Supabase ํด๋ผ์ด์ธํธ ์ด๊ธฐํ (REST API ์ฌ์ฉ) | |
| supabase_client: Client | None = None | |
| if SUPABASE_URL and SUPABASE_ANON_KEY and create_client: | |
| try: | |
| supabase_client = create_client(SUPABASE_URL, SUPABASE_ANON_KEY) | |
| print("โ Supabase REST API ํด๋ผ์ด์ธํธ ์ด๊ธฐํ ์๋ฃ") | |
| # Supabase ์ฐ๊ฒฐ ์ํ ํ์ธ | |
| is_supabase = check_supabase_health() | |
| if is_supabase: | |
| print("โ Supabase ์ฐ๊ฒฐ ํ์ธ ์๋ฃ") | |
| else: | |
| print("โ ๏ธ Supabase ํฌ์ค์ฒดํฌ ์คํจ, REST API๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค") | |
| except Exception as e: | |
| print(f"โ ๏ธ Supabase REST API ํด๋ผ์ด์ธํธ ์ด๊ธฐํ ์คํจ: {e}") | |
| supabase_client = None | |
| else: | |
| print("โ ๏ธ Supabase ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค.") | |
| print(" SUPABASE_URL๊ณผ SUPABASE_ANON_KEY๋ฅผ ์ค์ ํ์ธ์.") | |