64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
const express = require('express')
|
|
const dotenv = require('dotenv')
|
|
|
|
// Загрузить переменные окружения
|
|
dotenv.config()
|
|
|
|
// Подключение к MongoDB через mongoose
|
|
require('../../utils/mongoose')
|
|
|
|
// Импортировать маршруты
|
|
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 mongoose = require('mongoose')
|
|
|
|
const app = express()
|
|
|
|
// Задержка для имитации сети (опционально)
|
|
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',
|
|
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((err, req, res, next) => {
|
|
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 |