LearningnRunning's picture
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๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.")