\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv7/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv7/fix_backup_log_columns.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
backup_log tablosundaki eksik sütunları ekleyen script.
"""

import os
import sys
import logging
import psycopg2
from psycopg2 import sql
from dotenv import load_dotenv

# Logging ayarları
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def get_database_url():
    """Veritabanı URL'sini çevre değişkeninden alır."""
    load_dotenv()
    db_url = os.environ.get('DATABASE_URL')
    if not db_url:
        logger.error("DATABASE_URL çevre değişkeni bulunamadı.")
        sys.exit(1)
    return db_url

def fix_backup_log_columns():
    """backup_log tablosundaki eksik sütunları ekler."""
    db_url = get_database_url()

    try:
        # Veritabanı bağlantısını kur
        conn = psycopg2.connect(db_url)
        cursor = conn.cursor()

        # backup_log tablosu için
        logger.info("backup_log tablosunu kontrol ediliyor...")

        # İlk olarak backup_method sütununun var olup olmadığını kontrol et
        cursor.execute("""
            SELECT column_name 
            FROM information_schema.columns 
            WHERE table_name = 'backup_log' AND column_name = 'backup_method'
        """)
        
        if cursor.fetchone() is None:
            logger.info("backup_method sütunu ekleniyor...")
            cursor.execute(sql.SQL("""
                ALTER TABLE backup_log 
                ADD COLUMN backup_method VARCHAR(16) DEFAULT 'full'
            """))
            logger.info("backup_method sütunu eklendi.")
        else:
            logger.info("backup_method sütunu zaten mevcut.")

        # parent_log_id sütunu için kontrolü
        cursor.execute("""
            SELECT column_name 
            FROM information_schema.columns 
            WHERE table_name = 'backup_log' AND column_name = 'parent_log_id'
        """)
        
        if cursor.fetchone() is None:
            logger.info("parent_log_id sütunu ekleniyor...")
            cursor.execute(sql.SQL("""
                ALTER TABLE backup_log 
                ADD COLUMN parent_log_id INTEGER REFERENCES backup_log(id) ON DELETE SET NULL
            """))
            logger.info("parent_log_id sütunu eklendi.")
        else:
            logger.info("parent_log_id sütunu zaten mevcut.")

        # Değişiklikleri kaydet
        conn.commit()
        logger.info("Tüm sütunlar başarıyla eklendi!")

    except Exception as e:
        logger.error(f"Veritabanı şeması güncellenirken hata oluştu: {str(e)}")
        if 'conn' in locals() and conn:
            conn.rollback()
        return False
    finally:
        if 'cursor' in locals() and cursor:
            cursor.close()
        if 'conn' in locals() and conn:
            conn.close()

    return True

def main():
    """Ana fonksiyon"""
    logger.info("Veritabanı şeması güncelleme scripti başlatılıyor...")
    if fix_backup_log_columns():
        logger.info("Veritabanı şeması başarıyla güncellendi.")
    else:
        logger.error("Veritabanı şeması güncellenemedi!")
        sys.exit(1)

if __name__ == "__main__":
    main()

© KUJUNTI.ID