new procurement
This commit is contained in:
@@ -1,64 +1,94 @@
|
||||
const express = require('express')
|
||||
const dotenv = require('dotenv')
|
||||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const dotenv = require('dotenv');
|
||||
const connectDB = require('./config/db');
|
||||
|
||||
// Загрузить переменные окружения
|
||||
dotenv.config()
|
||||
|
||||
// Подключение к MongoDB через mongoose
|
||||
require('../../utils/mongoose')
|
||||
dotenv.config();
|
||||
|
||||
// Импортировать маршруты
|
||||
const authRoutes = require('./routes/auth')
|
||||
const companiesRoutes = require('./routes/companies')
|
||||
const messagesRoutes = require('./routes/messages')
|
||||
const searchRoutes = require('./routes/search')
|
||||
const buyRoutes = require('./routes/buy')
|
||||
const experienceRoutes = require('./routes/experience')
|
||||
const productsRoutes = require('./routes/products')
|
||||
const authRoutes = require('./routes/auth');
|
||||
const companiesRoutes = require('./routes/companies');
|
||||
const messagesRoutes = require('./routes/messages');
|
||||
const searchRoutes = require('./routes/search');
|
||||
const buyRoutes = require('./routes/buy');
|
||||
const experienceRoutes = require('./routes/experience');
|
||||
const productsRoutes = require('./routes/products');
|
||||
const reviewsRoutes = require('./routes/reviews');
|
||||
const buyProductsRoutes = require('./routes/buyProducts');
|
||||
const homeRoutes = require('./routes/home');
|
||||
|
||||
const mongoose = require('mongoose')
|
||||
const app = express();
|
||||
|
||||
const app = express()
|
||||
// Подключить MongoDB при инициализации
|
||||
let dbConnected = false;
|
||||
connectDB().then(() => {
|
||||
dbConnected = true;
|
||||
});
|
||||
|
||||
// Middleware
|
||||
app.use(cors());
|
||||
app.use(express.json({ charset: 'utf-8' }));
|
||||
app.use(express.urlencoded({ extended: true, charset: 'utf-8' }));
|
||||
|
||||
// Set UTF-8 encoding for all responses
|
||||
app.use((req, res, next) => {
|
||||
res.setHeader('Content-Type', 'application/json; charset=utf-8');
|
||||
next();
|
||||
});
|
||||
|
||||
// CORS headers
|
||||
app.use((req, res, next) => {
|
||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
||||
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
||||
if (req.method === 'OPTIONS') {
|
||||
res.sendStatus(200);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
// Задержка для имитации сети (опционально)
|
||||
const delay = (ms = 300) => (req, res, next) => setTimeout(next, ms)
|
||||
app.use(delay())
|
||||
const delay = (ms = 300) => (req, res, next) => setTimeout(next, ms);
|
||||
app.use(delay());
|
||||
|
||||
// Health check endpoint
|
||||
app.get('/health', (req, res) => {
|
||||
const mongodbStatus = mongoose.connection.readyState === 1 ? 'connected' : 'disconnected'
|
||||
res.json({
|
||||
status: 'ok',
|
||||
api: 'running',
|
||||
database: mongodbStatus,
|
||||
mongoUri: process.env.MONGODB_URI || 'mongodb://localhost:27017/procurement_db',
|
||||
database: dbConnected ? 'mongodb' : 'mock',
|
||||
timestamp: new Date().toISOString()
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// Маршруты
|
||||
app.use('/auth', authRoutes)
|
||||
app.use('/companies', companiesRoutes)
|
||||
app.use('/messages', messagesRoutes)
|
||||
app.use('/search', searchRoutes)
|
||||
app.use('/buy', buyRoutes)
|
||||
app.use('/experience', experienceRoutes)
|
||||
app.use('/products', productsRoutes)
|
||||
app.use('/auth', authRoutes);
|
||||
app.use('/companies', companiesRoutes);
|
||||
app.use('/messages', messagesRoutes);
|
||||
app.use('/search', searchRoutes);
|
||||
app.use('/buy', buyRoutes);
|
||||
app.use('/buy-products', buyProductsRoutes);
|
||||
app.use('/experience', experienceRoutes);
|
||||
app.use('/products', productsRoutes);
|
||||
app.use('/reviews', reviewsRoutes);
|
||||
app.use('/home', homeRoutes);
|
||||
|
||||
// Обработка ошибок
|
||||
app.use((err, req, res, next) => {
|
||||
console.error('API Error:', err)
|
||||
console.error('API Error:', err);
|
||||
res.status(err.status || 500).json({
|
||||
error: err.message || 'Internal server error'
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// 404 handler
|
||||
app.use((req, res) => {
|
||||
res.status(404).json({
|
||||
error: 'Not found'
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// Экспортировать для использования в brojs
|
||||
module.exports = app
|
||||
module.exports = app;
|
||||
Reference in New Issue
Block a user