Spaces:
Sleeping
Sleeping
File size: 3,511 Bytes
7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 7a4f631 a1146b3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
import streamlit as st
from supabase import create_client, Client
import os
def init_supabase():
"""Initialize Supabase client"""
try:
url = st.secrets.get("SUPABASE_URL")
key = st.secrets.get("SUPABASE_KEY")
except:
url = os.getenv("SUPABASE_URL")
key = os.getenv("SUPABASE_KEY")
if not url or not key:
st.error("Supabase credentials not found.")
return None
return create_client(url, key)
def test_database_connection():
"""Test database connection and user data"""
st.title("π Database Connection Test")
supabase = init_supabase()
if not supabase:
st.error("Failed to initialize Supabase client")
return
try:
# Test 1: Get all users
st.subheader("π All Users in Database")
response = supabase.table('users').select('*').execute()
if response.data:
st.success(f"Found {len(response.data)} users:")
for user in response.data:
st.write(f"**{user.get('username')}** - {user.get('full_name')} ({user.get('role')})")
st.write(f" Email: {user.get('email')}")
st.write(f" Password: '{user.get('password')}'")
st.write("---")
else:
st.warning("No users found in database")
# Test 2: Test function call
st.subheader("π§ Testing get_user_by_username Function")
test_username = "instructor"
try:
response = supabase.rpc('get_user_by_username', {'username_param': test_username}).execute()
if response.data:
st.success(f"Function call successful for '{test_username}':")
st.write(response.data[0])
else:
st.warning(f"Function returned no data for '{test_username}'")
except Exception as e:
st.error(f"Function call failed: {str(e)}")
# Test 3: Direct table query
st.subheader("π Direct Table Query")
try:
response = supabase.table('users').select('*').eq('username', test_username).execute()
if response.data:
st.success(f"Direct query successful for '{test_username}':")
st.write(response.data[0])
else:
st.warning(f"Direct query returned no data for '{test_username}'")
except Exception as e:
st.error(f"Direct query failed: {str(e)}")
# Test 4: Test password verification
st.subheader("π Password Verification Test")
test_password = "password123"
# Try function first
try:
response = supabase.rpc('get_user_by_username', {'username_param': test_username}).execute()
if response.data:
user = response.data[0]
stored_password = user.get('password')
st.write(f"Username: {test_username}")
st.write(f"Stored password: '{stored_password}'")
st.write(f"Test password: '{test_password}'")
st.write(f"Password match: {stored_password == test_password}")
else:
st.warning("No user data to test password")
except Exception as e:
st.error(f"Password test failed: {str(e)}")
except Exception as e:
st.error(f"Database test failed: {str(e)}")
if __name__ == "__main__":
test_database_connection() |