\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/DatabaseBackupMaster/
(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/DatabaseBackupMaster/add_compression_columns.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
yedekleDB24 için veritabanı şeması güncelleme scripti.
Bu script, yedeklerin sıkıştırılması için gerekli sütunları ekler.
"""

import os
import sys
import logging
import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table, Column, Boolean, String
from sqlalchemy.exc import SQLAlchemyError

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

def get_database_url():
    """Veritabanı URL'sini çevre değişkeninden alır."""
    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 add_compression_columns():
    """Sıkıştırma için gerekli sütunları ekler."""
    try:
        # Veritabanı bağlantısı
        db_url = get_database_url()
        engine = create_engine(db_url)
        metadata = MetaData()
        metadata.reflect(bind=engine)
        
        # BackupJob tablosuna sıkıştırma sütunlarını ekle
        if 'backup_job' in metadata.tables:
            backup_job = metadata.tables['backup_job']
            
            with engine.begin() as connection:
                # compress_backup sütunu ekle (varsa kontrol et)
                if 'compress_backup' not in backup_job.columns:
                    connection.execute(sqlalchemy.text(
                        "ALTER TABLE backup_job ADD COLUMN compress_backup BOOLEAN DEFAULT TRUE"
                    ))
                    logger.info("compress_backup sütunu eklendi.")
                else:
                    logger.info("compress_backup sütunu zaten mevcut.")
                
                # compression_type sütunu ekle (varsa kontrol et)
                if 'compression_type' not in backup_job.columns:
                    connection.execute(sqlalchemy.text(
                        "ALTER TABLE backup_job ADD COLUMN compression_type VARCHAR(16) DEFAULT 'zip'"
                    ))
                    logger.info("compression_type sütunu eklendi.")
                else:
                    logger.info("compression_type sütunu zaten mevcut.")
                
            logger.info("Yedek işleri tablosuna sıkıştırma sütunları başarıyla eklendi.")
            return True
        else:
            logger.error("backup_job tablosu bulunamadı!")
            return False
            
    except SQLAlchemyError as e:
        logger.error(f"Veritabanı hatası: {str(e)}")
        return False
    except Exception as e:
        logger.error(f"Beklenmeyen hata: {str(e)}")
        return False

def main():
    """Ana fonksiyon"""
    try:
        logger.info("Veritabanı şemasına sıkıştırma sütunları ekleniyor...")
        
        if add_compression_columns():
            logger.info("Veritabanı şeması başarıyla güncellendi.")
            return 0
        else:
            logger.error("Veritabanı şeması güncellenemedi!")
            return 1
            
    except Exception as e:
        logger.error(f"İşlem sırasında hata oluştu: {str(e)}")
        return 1

if __name__ == "__main__":
    sys.exit(main())

© KUJUNTI.ID