🔧 Исправление: DB конфигурация через ENV для локальной разработки
**Проблема:** - Реферальные API падали в dev режиме из-за хардкода DB подключения - Невозможно было запустить на локальном сервере без доступа к production БД **Решение:** - Вынесены DB credentials в ENV переменные: - DB_HOST, DB_USER, DB_PASSWORD, DB_NAME - Добавлена проверка isDbConfigured в API endpoints - Mock ответы для dev режима (когда DB не настроена) **Изменения:** - .env.example: добавлены DB переменные - .env.local: пустые DB переменные (dev mode) - /api/referral/track: graceful fallback без DB - /api/referral/stats: mock данные без DB **Результат:** - ✅ Dev сервер работает без production DB - ✅ Production будет использовать DB из ENV - ✅ Логи предупреждают о dev режиме - ✅ Реферальная система опциональна для разработки
This commit is contained in:
@@ -4,14 +4,17 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import mysql from 'mysql2/promise';
|
||||
|
||||
// Database connection config
|
||||
// Database connection config from ENV
|
||||
const dbConfig = {
|
||||
host: '193.168.175.128',
|
||||
user: 'marzban_user',
|
||||
password: '2CuopqFd0Y5V5n/qBM+eygOQb6aC8B8pACcdHjeVJsE=',
|
||||
database: 'marzban_prod',
|
||||
host: process.env.DB_HOST || '',
|
||||
user: process.env.DB_USER || '',
|
||||
password: process.env.DB_PASSWORD || '',
|
||||
database: process.env.DB_NAME || '',
|
||||
};
|
||||
|
||||
// Check if DB is configured
|
||||
const isDbConfigured = dbConfig.host && dbConfig.user && dbConfig.database;
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
const { searchParams } = new URL(request.url);
|
||||
@@ -24,6 +27,21 @@ export async function GET(request: NextRequest) {
|
||||
);
|
||||
}
|
||||
|
||||
// Return mock data if DB not configured (dev mode)
|
||||
if (!isDbConfigured) {
|
||||
console.log('⚠️ Referral stats skipped: DB not configured');
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
hasReferrals: false,
|
||||
dev_mode: true,
|
||||
stats: {
|
||||
referral_count: 0,
|
||||
bonus_days_earned: 0,
|
||||
total_referrals_used: 0,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
// Connect to database
|
||||
const connection = await mysql.createConnection(dbConfig);
|
||||
|
||||
|
||||
@@ -4,14 +4,17 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import mysql from 'mysql2/promise';
|
||||
|
||||
// Database connection config
|
||||
// Database connection config from ENV
|
||||
const dbConfig = {
|
||||
host: '193.168.175.128',
|
||||
user: 'marzban_user',
|
||||
password: '2CuopqFd0Y5V5n/qBM+eygOQb6aC8B8pACcdHjeVJsE=',
|
||||
database: 'marzban_prod',
|
||||
host: process.env.DB_HOST || '',
|
||||
user: process.env.DB_USER || '',
|
||||
password: process.env.DB_PASSWORD || '',
|
||||
database: process.env.DB_NAME || '',
|
||||
};
|
||||
|
||||
// Check if DB is configured
|
||||
const isDbConfigured = dbConfig.host && dbConfig.user && dbConfig.database;
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json();
|
||||
@@ -24,6 +27,16 @@ export async function POST(request: NextRequest) {
|
||||
);
|
||||
}
|
||||
|
||||
// Return mock success if DB not configured (dev mode)
|
||||
if (!isDbConfigured) {
|
||||
console.log('⚠️ Referral tracking skipped: DB not configured');
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
message: 'Referral tracking disabled (dev mode)',
|
||||
dev_mode: true,
|
||||
});
|
||||
}
|
||||
|
||||
// Connect to database
|
||||
const connection = await mysql.createConnection(dbConfig);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user