const express = require("express");
const cors = require("cors");
require("dotenv").config();
const cookieParser = require("cookie-parser");

// Rotaların import edilmesi
const userRoutesneedRefactor = require("./routes/user.routes");
const dealRoutes = require("./routes/deal.routes");
const authRoutes = require("./routes/auth.routes");
const dealVoteRoutes = require("./routes/vote.routes");
const commentRoutes = require("./routes/comment.routes");
const accountSettingsRoutes = require("./routes/accountSettings.routes");
const userRoutes = require("./routes/user.routes");
const sellerRoutes = require("./routes/seller.routes");
const voteRoutes = require("./routes/vote.routes");
const commentLikeRoutes = require("./routes/commentLike.routes");
const categoryRoutes =require("./routes/category.routes")
const modRoutes = require("./routes/mod.routes")
const app = express();

// CORS middleware'ı ile dışardan gelen istekleri kontrol et
const allowedOrigins = new Set([
  "http://192.168.1.205:3001",
  "http://localhost:3001",
]);

app.use(
  cors({
    origin(origin, cb) {
      if (!origin) return cb(null, true);
      if (allowedOrigins.has(origin)) return cb(null, true);
      return cb(new Error("CORS_NOT_ALLOWED"));
    },
    credentials: true, // Cookies'in paylaşıma izin verilmesi
  })
);
// JSON, URL encoded ve cookies'leri parse etme
app.use(express.json());  // JSON verisi almak için
app.use(express.urlencoded({ extended: true }));  // URL encoded veriler için
app.use(cookieParser());  // Cookies'leri çözümlemek için

// API route'larını tanımlama
app.use("/api/users", userRoutesneedRefactor);  // User işlemleri
app.use("/api/deals", dealRoutes);  // Deal işlemleri
app.use("/api/auth", authRoutes);  // Auth işlemleri (login, register vs.)
app.use("/api/deal-votes", dealVoteRoutes);  // Deal oy işlemleri
app.use("/api/comments", commentRoutes);  // Comment işlemleri
app.use("/api/account", accountSettingsRoutes);  // Account settings işlemleri
app.use("/api/user", userRoutes);  // Kullanıcı işlemleri
app.use("/api/seller", sellerRoutes);  // Seller işlemleri
app.use("/api/vote", voteRoutes);  // Vote işlemleri
app.use("/api/comment-likes", commentLikeRoutes);  // Comment like işlemleri
app.use("/api/category", categoryRoutes);
app.use("/api/mod", modRoutes);
// Sunucuyu dinlemeye başla
app.listen(3000, () => console.log("Server running on http://localhost:3000"));
