Spaces:
Sleeping
Sleeping
| import express from 'express'; | |
| import cors from 'cors'; | |
| import dotenv from 'dotenv'; | |
| import compression from 'compression'; | |
| import trackRoutes from './routes/trackRoutes'; | |
| import adventureRoutes from './routes/adventureRoutes'; | |
| import activityRoutes from './routes/activityRoutes'; | |
| import { TrackModel } from './models/TrackModel'; | |
| import { AdventureModel } from './models/AdventureModel'; | |
| import { ActivityModel } from './models/ActivityModel'; | |
| dotenv.config(); | |
| const app = express(); | |
| const port = Number.parseInt(process.env.PORT ?? '3000', 10); | |
| const host = process.env.HOST || '0.0.0.0'; | |
| app.use(cors()); | |
| app.use(compression()); | |
| app.use(express.json()); | |
| // Initialize database tables | |
| async function initializeDatabase() { | |
| try { | |
| await TrackModel.ensureTable(); | |
| await AdventureModel.ensureTable(); | |
| await ActivityModel.ensureTable(); | |
| console.log('Database tables initialized successfully.'); | |
| } catch (error) { | |
| console.error('Error initializing database tables:', error); | |
| } | |
| } | |
| initializeDatabase(); | |
| // Health check endpoint | |
| app.get('/api/health', (req, res) => { | |
| res.status(200).send('OK'); | |
| }); | |
| // Public ski tracks endpoints | |
| app.use('/api/tracks', trackRoutes); | |
| // UI taxonomy endpoints | |
| app.use('/api/activities', activityRoutes); | |
| // User adventures endpoints | |
| app.use('/api/adventures', adventureRoutes); | |
| app.listen(port, host, () => { | |
| console.log(`Server running on http://${host}:${port}`); | |
| }); | |