import express from 'express'
import cors from 'cors';
import compression from 'compression'
import helmet from 'helmet';
import websiteRouter from './controllers/websites/website.routes';
import { GlobalError } from './middleware/GlobalError';
import { clerkMiddleware } from '@clerk/express'
import websiteReportRouter from './controllers/report/report.routes';
import dotenv from 'dotenv'
import CloudeflairImageRouter from './controllers/cloudeflair/cloudeflair.routes';
import CloudeCacheRouter from './controllers/cache/cache.routes';
import ShopifyCacheRouter from './controllers/shopify/shopify.routes';
import ConversionRouter from './controllers/conversion/conversion.routes';
import { authRouter } from './controllers/auth/auth.routes';
import { authMiddleware } from './middleware/auth';
import UserRouter from './controllers/users/users.routes';
import InvitationsRouter from './controllers/invitations/invitations.routes';
import IPRouter from './controllers/ip/ip.routes';
import { InternetProtocol } from './middleware/ip';
import { InternetProtocolChecker } from './middleware/IPChecker';
import utilsRouter from './controllers/utils/utils.service';
import overviewRouter from './controllers/overview/overview.routes';
import weblinksRouter from './controllers/links/links.routes';
import permissionRouter from './controllers/permission/permission.routes';


dotenv.config()

const web = express();

web.use(cors({
    // origin: "http://localhost:5173",
    origin: ["http://192.168.29.6:5173",],
    credentials: true
}))
web.use(compression())
web.use(helmet());
web.use(express.urlencoded({ extended: true, limit: '24kb' }));

// first check ip middleware

// web.use(InternetProtocol);



// clerk
// web.use(InternetProtocol)

web.use('/auth', authRouter)


// rest apis


web.use(express.json({ limit: "24kb" }));


web.use(clerkMiddleware({
    secretKey: process.env.CLERK_SECRET_KEY,
    publishableKey: process.env.CLERK_PUBLISHABLE_KEY,
}))

// websites route
web.use("/websites", websiteRouter);
web.use("/report", websiteReportRouter);
web.use("/cloudeflair", CloudeflairImageRouter);
web.use('/cache', CloudeCacheRouter);
web.use('/shopify', ShopifyCacheRouter);
web.use('/conversion', ConversionRouter);
web.use('/users', UserRouter);
web.use('/invitations', InvitationsRouter);
web.use('/ip-address', IPRouter);
web.use('/over-view', overviewRouter);
web.use('/web-link', weblinksRouter);
web.use("/web", utilsRouter);
web.use("/permission", permissionRouter);



web.use(GlobalError);

// web.all("/", (req: Request, res: Response) => {
//     res.status(404).json({ message: "Route not found" });
// });


web.listen(3333, () => {
    console.log("http://localhost:3333")
})