Spaces:
Sleeping
Sleeping
| const express = require('express'); | |
| const http = require('http'); | |
| const socketIo = require('socket.io'); | |
| const cors = require('cors'); | |
| require('dotenv').config(); | |
| const app = express(); | |
| const server = http.createServer(app); | |
| const io = socketIo(server, { | |
| cors: { | |
| origin: true, | |
| methods: ["GET", "POST"], | |
| credentials: true | |
| } | |
| }); | |
| // Middleware | |
| app.use(cors({ | |
| origin: function (origin, callback) { | |
| if (!origin) return callback(null, true); | |
| return callback(null, origin); | |
| }, | |
| credentials: true | |
| })); | |
| app.use(express.json()); | |
| // Routes | |
| const authRoutes = require('./routes/auth'); | |
| const userRoutes = require('./routes/users'); | |
| const teamRoutes = require('./routes/teams'); | |
| const customerRoutes = require('./routes/customers'); | |
| const orderRoutes = require('./routes/orders'); | |
| const productRoutes = require('./routes/products'); | |
| app.use('/api/auth', authRoutes); | |
| app.use('/api/users', userRoutes); | |
| app.use('/api/teams', teamRoutes); | |
| app.use('/api/customers', customerRoutes); | |
| app.use('/api/orders', orderRoutes); | |
| app.use('/api/products', productRoutes); | |
| // Socket.io connection handler | |
| const socketConfig = require('./config/socket'); | |
| io.on('connection', (socket) => { | |
| socketConfig.handleSocketConnection(socket, io); | |
| }); | |
| // Database sync and Start server | |
| const { sequelize } = require('./config/database'); | |
| const { Product } = require('./models'); | |
| const PORT = process.env.PORT || 5000; | |
| sequelize.sync({ force: false }).then(async () => { | |
| console.log('Database synced successfully.'); | |
| try { | |
| // Seed default Naira products if database has no products | |
| const count = await Product.count(); | |
| if (count === 0) { | |
| await Product.bulkCreate([ | |
| { name: 'Premium Velvet Purple Fabric Roll', priceNaira: 45000.00, stockCount: 150, zohoProductId: 'ZOHO-PROD-001' }, | |
| { name: 'Susu Premium Woven Cotton (Gold)', priceNaira: 32000.00, stockCount: 200, zohoProductId: 'ZOHO-PROD-002' }, | |
| { name: 'Osusu Luxury Silk Ribbon (Royal Blue)', priceNaira: 18500.00, stockCount: 100, zohoProductId: 'ZOHO-PROD-003' }, | |
| { name: 'Standard Susu Polyester Mesh (Black)', priceNaira: 12000.00, stockCount: 500, zohoProductId: 'ZOHO-PROD-004' } | |
| ]); | |
| console.log('Seeded default Susu products in Naira successfully.'); | |
| } | |
| } catch (seederErr) { | |
| console.error('Product seeder error:', seederErr); | |
| } | |
| server.listen(PORT, () => { | |
| console.log(`Server is running on port ${PORT}`); | |
| }); | |
| }).catch(err => { | |
| console.error('Failed to sync database:', err); | |
| }); | |