recipe-backend/src/index.ts
2025-09-24 21:24:20 +02:00

55 lines
1.6 KiB
TypeScript

import "reflect-metadata";
import express, { NextFunction, Request, Response } from "express";
import dotenv from "dotenv";
import { AppDataSource } from "./data-source.js";
import authRoutes, { authBasicRoute } from "./endpoints/AuthPoint.js";
import userRoutes from "./endpoints/UserPoint.js";
// import recipeRoutes from "./endpoints/RecipePoint.js";
import { errorHandler } from "./middleware/errorHandler.js";
import { authentication } from "./middleware/authenticationMiddleware.js";
dotenv.config();
const app = express();
app.use(express.json());
app.use(errorHandler);
async function startServer() {
try {
// Initialize database
await AppDataSource.initialize();
console.log("Data Source initialized");
// Run pending migrations
await AppDataSource.runMigrations();
console.log("Migrations executed");
// Activate Authentication
app.use(authentication);
// Setup routes
app.use(authBasicRoute, authRoutes);
app.use("/user", userRoutes);
// app.use("/recipe", recipeRoutes);
console.log("auth and user routes added")
app.get(/(.*)/, (req: Request, res: Response, next: NextFunction) => {
res.status(400).json({ message: "Bad Request" });
});
console.log("Routes set up")
// Start listening
const PORT = Number(process.env.PORT) || 4000;
const HOST = process.env.HOST || "localhost";
app.listen(PORT, HOST, () => {
console.log(`✅ Server running on http://${HOST}:${PORT}`);
});
} catch (err) {
console.error("❌ Error during Data Source initialization:", err);
process.exit(1);
}
}
// Call the async start function
startServer();