Spaces:
Running
Running
| import os | |
| import subprocess | |
| import datetime | |
| from dotenv import load_dotenv | |
| # Wczytywanie z .env | |
| load_dotenv() | |
| DATABASE_URL = os.getenv("DATABASE_URL") | |
| PINECONE_API_KEY = os.getenv("PINECONE_API_KEY") | |
| PINECONE_INDEX_NAME = os.getenv("PINECONE_INDEX_NAME", "dotacje") | |
| def backup_postgres(): | |
| """Tworzy zrzut głównej bazy relacyjnej (Userzy, Projekty, Sesje Wizard, etc.)""" | |
| if not DATABASE_URL or "localhost" in DATABASE_URL: | |
| print("Pomijanie backupu Postgres (używana jest lokalna baza lub baza SQLite).") | |
| return | |
| timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") | |
| backup_file = f"backup_postgres_{timestamp}.sql" | |
| print(f"Tworzenie zrzutu danych PostgreSQL do pliku: {backup_file}...") | |
| try: | |
| # Standardowe narzędzie pg_dump | |
| subprocess.run(["pg_dump", DATABASE_URL, "-f", backup_file], check=True) | |
| print("✅ Zrzut bazy zakończony sukcesem.") | |
| except Exception as e: | |
| print(f"❌ Błąd podczas zrzutu bazy: {e}") | |
| print( | |
| "Upewnij się, że polecenie 'pg_dump' jest dostępne w systemie (wymaga instalacji PostgreSQL Client)." | |
| ) | |
| def backup_pinecone(): | |
| """Tworzy snapshot/Collection z obecnego indeksu Pinecone, gwarantując bezpieczną kopię embeddings.""" | |
| if not PINECONE_API_KEY: | |
| print("Pomijanie backupu Pinecone (Brak PINECONE_API_KEY).") | |
| return | |
| print( | |
| f"Tworzenie kopii zapasowej wektorów RAG (Pinecone) z indeksu: {PINECONE_INDEX_NAME}..." | |
| ) | |
| try: | |
| from pinecone import Pinecone | |
| pc = Pinecone(api_key=PINECONE_API_KEY) | |
| timestamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S") | |
| collection_name = f"{PINECONE_INDEX_NAME}-backup-{timestamp}" | |
| pc.create_collection(name=collection_name, source=PINECONE_INDEX_NAME) | |
| print( | |
| f"✅ Utworzono kopię zapasową indeksu jako Pinecone Collection: '{collection_name}'" | |
| ) | |
| except ImportError: | |
| print( | |
| "❌ Brakuje biblioteki 'pinecone-client'. Zainstaluj ją za pomocą: pip install pinecone-client" | |
| ) | |
| except Exception as e: | |
| print(f"❌ Błąd podczas tworzenia kolekcji w Pinecone: {e}") | |
| if __name__ == "__main__": | |
| print("====================================") | |
| print(" GRANTFORGE - PROCEDURA BACKUPU") | |
| print("====================================") | |
| backup_postgres() | |
| print("-" * 30) | |
| backup_pinecone() | |
| print("Zakończono w całości.") | |