""" Примеры использования SupabaseManager """ from supabase import SupabaseManager def example_select(): """Пример выборки данных из таблицы""" print("\n=== Пример SELECT ===") sb = SupabaseManager() # Получить все записи all_users = sb.select(table="users") print(f"Всего пользователей: {len(all_users)}") # Получить с фильтром filtered_users = sb.select( table="users", filters={"age": 30} ) print(f"Пользователей с возрастом 30: {len(filtered_users)}") # Получить с лимитом limited_users = sb.select( table="users", limit=5 ) print(f"Первые 5 пользователей: {len(limited_users)}") # Выбрать только определенные колонки names_only = sb.select( table="users", columns="id, name" ) for user in names_only: print(f" - {user.get('name')} (ID: {user.get('id')})") def example_insert(): """Пример добавления новой записи""" print("\n=== Пример INSERT ===") sb = SupabaseManager() new_user = { "name": "Тимур Иванов", "email": f"timur_{hash('test')}@example.com", "age": 28 } result = sb.insert(table="users", data=new_user) if result: print(f"Создан пользователь: {result.get('name')} с ID {result.get('id')}") else: print("Ошибка при создании пользователя") def example_update(): """Пример обновления записи""" print("\n=== Пример UPDATE ===") sb = SupabaseManager() # Сначала получим ID первого пользователя users = sb.select(table="users", limit=1) if users: user_id = users[0].get('id') # Обновим возраст updated = sb.update( table="users", data={"age": 31}, filters={"id": user_id} ) if updated: print(f"Обновлен пользователь ID {user_id}: {updated[0]}") else: print("Нет пользователей для обновления") def example_delete(): """Пример удаления записи""" print("\n=== Пример DELETE ===") sb = SupabaseManager() # Получим последнюю запись users = sb.select(table="users") if users: last_user = users[-1] user_id = last_user.get('id') print(f"Удаляем пользователя: {last_user.get('name')} (ID: {user_id})") deleted = sb.delete( table="users", filters={"id": user_id} ) if deleted: print(f"✅ Пользователь удален") else: print("Нет пользователей для удаления") def example_complex_query(): """Пример работы с прямым клиентом Supabase для сложных запросов""" print("\n=== Пример сложных запросов ===") sb = SupabaseManager() client = sb.get_client() # Использование операторов сравнения adults = client.table("users")\ .select("*")\ .gte("age", 18)\ .execute() print(f"Взрослых пользователей (18+): {len(adults.data)}") # Поиск по паттерну (LIKE) ivan_users = client.table("users")\ .select("*")\ .ilike("name", "%иван%")\ .execute() print(f"Пользователей с 'иван' в имени: {len(ivan_users.data)}") # Сортировка sorted_users = client.table("users")\ .select("*")\ .order("age", desc=True)\ .limit(3)\ .execute() print("Топ-3 самых старших пользователей:") for user in sorted_users.data: print(f" - {user.get('name')}, {user.get('age')} лет") def example_storage(): """Пример работы с Storage (загрузка файлов)""" print("\n=== Пример работы с Storage ===") sb = SupabaseManager() # Создадим тестовый текстовый файл test_content = "Это тестовый файл для демонстрации работы с Supabase Storage" file_data = test_content.encode('utf-8') # Загрузим файл success = sb.upload_file( bucket="test-bucket", file_path="examples/test.txt", file_data=file_data, content_type="text/plain" ) if success: # Получим публичный URL url = sb.get_public_url( bucket="test-bucket", file_path="examples/test.txt" ) print(f"Файл доступен по URL: {url}") else: print("Ошибка при загрузке файла (проверьте, существует ли bucket 'test-bucket')") def example_batch_operations(): """Пример пакетных операций""" print("\n=== Пример пакетных операций ===") sb = SupabaseManager() # Добавим несколько пользователей users_to_add = [ {"name": "Алексей Петров", "email": f"alex_{i}@example.com", "age": 25 + i} for i in range(3) ] print(f"Добавляем {len(users_to_add)} пользователей...") for user_data in users_to_add: result = sb.insert(table="users", data=user_data) if result: print(f" ✅ {result.get('name')}") def example_error_handling(): """Пример обработки ошибок""" print("\n=== Пример обработки ошибок ===") try: sb = SupabaseManager() # Попытка запроса к несуществующей таблице result = sb.select(table="nonexistent_table") if not result: print("⚠️ Таблица не существует или запрос вернул пустой результат") except Exception as e: print(f"❌ Произошла ошибка: {e}") def main(): """Запуск всех примеров""" print("=" * 60) print("Примеры использования SupabaseManager") print("=" * 60) try: # Раскомментируйте нужные примеры example_select() # example_insert() # example_update() # example_delete() # example_complex_query() # example_storage() # example_batch_operations() # example_error_handling() except ValueError as e: print(f"\n❌ Ошибка инициализации: {e}") print("\n💡 Убедитесь, что вы создали файл .env с переменными:") print(" SUPABASE_URL=your_url") print(" SUPABASE_KEY=your_key") except Exception as e: print(f"\n❌ Непредвиденная ошибка: {e}") if __name__ == "__main__": main()