from flask import Flask, request, jsonify
import psycopg2
import psycopg2.extras
from datetime import datetime
import json

app = Flask(__name__)

DB_CONFIG = {
    'host': '127.0.0.1',
    'database': 'aliexpress_automation',
    'user': 'postgres',
    'password': 'PostgresPass123'
}

@app.route('/pg/query', methods=['POST'])
def execute_query():
    try:
        data = request.get_json()
        query = data.get('query')
        params = data.get('params', [])
        
        print(f"Executing query: {query}")
        print(f"With params: {params}")
        
        conn = psycopg2.connect(**DB_CONFIG)
        cursor = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
        
        if params:
            cursor.execute(query, params)
        else:
            cursor.execute(query)
        
        if query.strip().upper().startswith('SELECT'):
            result = [dict(row) for row in cursor.fetchall()]
        else:
            conn.commit()
            if query.strip().upper().startswith('INSERT') and 'RETURNING' in query.upper():
                result = [dict(row) for row in cursor.fetchall()]
            else:
                result = {'affected_rows': cursor.rowcount}
        
        cursor.close()
        conn.close()
        
        return jsonify({'success': True, 'data': result})
        
    except Exception as e:
        print(f"Error: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500

@app.route('/pg/health', methods=['GET'])
def health_check():
    try:
        conn = psycopg2.connect(**DB_CONFIG)
        cursor = conn.cursor()
        cursor.execute("SELECT 1")
        cursor.close()
        conn.close()
        
        return jsonify({
            'success': True,
            'message': 'PostgreSQL API работает',
            'timestamp': datetime.now().isoformat()
        })
        
    except Exception as e:
        return jsonify({'success': False, 'error': str(e)}), 500

if __name__ == '__main__':
    print("🚀 Запуск PostgreSQL API прокси на порту 5679")
    app.run(host='0.0.0.0', port=5679, debug=False)
