diff --git a/src/routes/OrganizationRoutes.ts b/src/routes/OrganizationRoutes.ts deleted file mode 100644 index 4f91a38..0000000 --- a/src/routes/OrganizationRoutes.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Router } from "express"; -import OrganizationController from "../modules/organization/presentation/controllers/OrganizationController.stub"; -import auth from "../middleware/authMiddleware"; - -const router = Router(); - -// Public routes -router.post("/", OrganizationController.createOrganization); -router.get("/", OrganizationController.getAllOrganizations); -router.get("/:id", OrganizationController.getOrganizationById); -router.get("/email/:email", OrganizationController.getOrganizationByEmail); - -// Protected routes -router.put( - "/:id", - auth.authMiddleware, - OrganizationController.updateOrganization -); -router.delete( - "/:id", - auth.authMiddleware, - OrganizationController.deleteOrganization -); - -export default router; diff --git a/src/routes/ProjectRoutes.ts b/src/routes/ProjectRoutes.ts deleted file mode 100644 index d48c4bd..0000000 --- a/src/routes/ProjectRoutes.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Router } from "express"; -import ProjectController from "../modules/project/presentation/controllers/Project.controller.stub"; - -const router = Router(); -const projectController = new ProjectController(); - -router.post("/", async (req, res) => projectController.createProject(req, res)); -router.get("/:id", async (req, res) => - projectController.getProjectById(req, res) -); -router.get("/organizations/:organizationId", async (req, res) => - projectController.getProjectsByOrganizationId(req, res) -); - -export default router; diff --git a/src/routes/VolunteerRoutes.ts b/src/routes/VolunteerRoutes.ts deleted file mode 100644 index 24fe3b9..0000000 --- a/src/routes/VolunteerRoutes.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Router } from "express"; -import VolunteerController from "../modules/volunteer/presentation/controllers/VolunteerController.stub"; - -const router = Router(); -const volunteerController = new VolunteerController(); - -router.post("/", async (req, res) => - volunteerController.createVolunteer(req, res) -); -router.get("/:id", async (req, res) => - volunteerController.getVolunteerById(req, res) -); -router.get("/projects/:projectId", async (req, res) => - volunteerController.getVolunteersByProjectId(req, res) -); - -export default router; diff --git a/src/routes/authRoutes.ts b/src/routes/authRoutes.ts deleted file mode 100644 index 6336aeb..0000000 --- a/src/routes/authRoutes.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Router } from "express"; -import AuthController from "../modules/auth/presentation/controllers/Auth.controller"; -// import authMiddleware from "../middleware/authMiddleware"; // Temporarily disabled - -const router = Router(); - -// Health check for auth module -router.get("/health", (req, res) => { - res.json({ status: "Auth module is available", module: "auth" }); -}); - -// Public routes (now using functional controller) -router.post("/register", AuthController.register); -router.post("/login", AuthController.login); - -router.post("/send-verification-email", AuthController.resendVerificationEmail); -router.get("/verify-email/:token", AuthController.verifyEmail); -router.get("/verify-email", AuthController.verifyEmail); // Support query param method -router.post("/resend-verification", AuthController.resendVerificationEmail); - -// Wallet verification routes -router.post("/verify-wallet", AuthController.verifyWallet); -router.post("/validate-wallet-format", AuthController.validateWalletFormat); - -// Protected routes - temporarily commented out due to interface mismatch -// router.get('/protected', authMiddleware.authMiddleware, AuthController.protectedRoute); -// router.get('/verification-status', authMiddleware.authMiddleware, AuthController.checkVerificationStatus); - -// Routes requiring verified email - temporarily commented out due to interface mismatch -// router.get('/verified-only', -// authMiddleware.authMiddleware, -// authMiddleware.requireVerifiedEmail, -// (req, res) => { -// res.json({ message: "You have access to this protected route because your email is verified!" }); -// } -// ); - -export default router; diff --git a/src/routes/certificatesRoutes.ts b/src/routes/certificatesRoutes.ts deleted file mode 100644 index 87ec7aa..0000000 --- a/src/routes/certificatesRoutes.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Router } from "express"; -import { - downloadCertificate, - createCertificate, -} from "../modules/certificate/presentation/controllers/certificate.controller"; -import auth from "../middleware/authMiddleware"; - -const router = Router(); - -router.get("/volunteers/:id", auth.authMiddleware, downloadCertificate); -router.post("/volunteers/:id", auth.authMiddleware, createCertificate); - -export default router; diff --git a/src/routes/index.ts b/src/routes/index.ts deleted file mode 100644 index 21cc85c..0000000 --- a/src/routes/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Router } from "express"; -import v1Router from "./v1"; - -const apiRouter = Router(); - -/** - * API Versioning Router - * - * This router handles API versioning by namespacing routes under version prefixes. - * - * Current versions: - * - /v1/ - Current stable API version - * - /v2/ - Reserved for future expansion - */ - -// V1 API Routes -apiRouter.use("/v1", v1Router); - -// V2 API Routes (Reserved for future expansion) -// apiRouter.use("/v2", v2Router); - -// Version info endpoint -apiRouter.get("/", (req, res) => { - res.json({ - message: "VolunChain API", - versions: { - v1: { - status: "stable", - description: "Current stable API version", - endpoints: "/v1/", - }, - v2: { - status: "reserved", - description: "Reserved for future expansion", - endpoints: "/v2/", - }, - }, - documentation: "/api/docs", - }); -}); - -export default apiRouter; diff --git a/src/routes/nftRoutes.ts b/src/routes/nftRoutes.ts deleted file mode 100644 index 279cf05..0000000 --- a/src/routes/nftRoutes.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Router } from "express"; -import NFTController from "../modules/nft/presentation/controllers/NFTController.stub"; -import { - validateDto, - validateParamsDto, -} from "../shared/middleware/validation.middleware"; -import { CreateNFTDto } from "../modules/nft/dto/create-nft.dto"; -import { UuidParamsDto } from "../shared/dto/base.dto"; - -const router = Router(); - -router.post("/nfts", validateDto(CreateNFTDto), NFTController.createNFT); - -router.get( - "/nfts/:id", - validateParamsDto(UuidParamsDto), - NFTController.getNFTById -); - -router.get( - "/users/:userId/nfts", - validateParamsDto(UuidParamsDto), - NFTController.getNFTsByUserId -); - -router.delete( - "/nfts/:id", - validateParamsDto(UuidParamsDto), - NFTController.deleteNFT -); - -export default router; diff --git a/src/routes/testRoutes.ts b/src/routes/testRoutes.ts deleted file mode 100644 index 56101bc..0000000 --- a/src/routes/testRoutes.ts +++ /dev/null @@ -1,40 +0,0 @@ -import express from "express"; -import { prisma } from "../config/prisma"; - -const router = express.Router(); - -// Test route for database performance -router.get("/db-test", async (req, res) => { - try { - // Perform multiple queries to test connection pooling - const startTime = Date.now(); - - // Parallel queries to test connection pool - const [users, organizations, projects] = await Promise.all([ - prisma.user.findMany({ take: 5 }), - prisma.organization.findMany({ take: 5 }), - prisma.project.findMany({ take: 5 }), - ]); - - const endTime = Date.now(); - const duration = endTime - startTime; - - res.json({ - success: true, - duration: `${duration}ms`, - results: { - users: users.length, - organizations: organizations.length, - projects: projects.length, - }, - }); - } catch (error) { - console.error("Database test error:", error); - res.status(500).json({ - success: false, - error: "Database test failed", - }); - } -}); - -export default router; diff --git a/src/routes/userRoutes.ts b/src/routes/userRoutes.ts deleted file mode 100644 index a30447a..0000000 --- a/src/routes/userRoutes.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - Router, - Request, - Response, - RequestHandler, - NextFunction, -} from "express"; -import UserController from "../modules/user/presentation/controllers/UserController.stub"; -import { authMiddleware } from "../middleware/authMiddleware"; -import { AuthenticatedRequest } from "../types/auth.types"; - -const userController = new UserController(); -const router = Router(); - -type AuthenticatedHandler = ( - req: AuthenticatedRequest, - res: Response -) => Promise; - -const wrapHandler = (handler: AuthenticatedHandler): RequestHandler => { - return ((req: Request, res: Response, next: NextFunction) => { - handler(req as AuthenticatedRequest, res).catch(next); - }) as unknown as RequestHandler; -}; - -// Public routes -router.post( - "/users", - wrapHandler(userController.createUser.bind(userController)) -); -router.get( - "/users/:id", - wrapHandler(userController.getUserById.bind(userController)) -); -router.get( - "/users/:email", - wrapHandler(userController.getUserByEmail.bind(userController)) -); - -// Protected routes -router.put( - "/users/:id", - authMiddleware, - wrapHandler(userController.updateUser.bind(userController)) -); - -export default router; diff --git a/src/routes/v1/index.ts b/src/routes/v1/index.ts deleted file mode 100644 index 2dea990..0000000 --- a/src/routes/v1/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Router } from "express"; -import authRoutes from "../authRoutes"; -import nftRoutes from "../nftRoutes"; -import userRoutes from "../userRoutes"; -import metricsRoutes from "../../modules/metrics/routes/metrics.routes"; -import certificateRoutes from "../certificatesRoutes"; -import volunteerRoutes from "../VolunteerRoutes"; -import projectRoutes from "../ProjectRoutes"; -import organizationRoutes from "../OrganizationRoutes"; - -const v1Router = Router(); - -/** - * V1 API Routes - * All routes are namespaced under /v1/ - */ - -// Authentication routes - /v1/auth/* -v1Router.use("/auth", authRoutes); - -// NFT routes - /v1/nft/* -v1Router.use("/nft", nftRoutes); - -// User routes - /v1/users/* -v1Router.use("/users", userRoutes); - -// Metrics routes - /v1/metrics/* -v1Router.use("/metrics", metricsRoutes); - -// Certificate routes - /v1/certificate/* -v1Router.use("/certificate", certificateRoutes); - -// Project routes - /v1/projects/* -v1Router.use("/projects", projectRoutes); - -// Volunteer routes - /v1/volunteers/* -v1Router.use("/volunteers", volunteerRoutes); - -// Organization routes - /v1/organizations/* -v1Router.use("/organizations", organizationRoutes); - -export default v1Router; diff --git a/src/routes/v2/auth.routes.ts b/src/routes/v2/auth.routes.ts deleted file mode 100644 index 61ffa43..0000000 --- a/src/routes/v2/auth.routes.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Router } from "express"; -import { validateDto } from "../../shared/middleware/validation.middleware"; -import { RegisterDto } from "../../modules/auth/dto/register.dto"; -import { LoginDto } from "../../modules/auth/dto/login.dto"; -import { ResendVerificationDTO } from "../../modules/auth/dto/resendVerificationDTO"; -import { VerifyEmailDTO } from "../../modules/auth/dto/verifyEmailDTO"; -import { - ValidateWalletFormatDto, - VerifyWalletDto, -} from "../../modules/auth/dto/wallet-validation.dto"; - -const router = Router(); - -// Note: This is an example of how to properly integrate validation middleware -// The controller would need to be properly instantiated with dependencies - -// POST /auth/register - User registration -router.post( - "/register", - validateDto(RegisterDto) - // authController.register -); - -// POST /auth/login - User login -router.post( - "/login", - validateDto(LoginDto) - // authController.login -); - -// POST /auth/resend-verification - Resend email verification -router.post( - "/resend-verification", - validateDto(ResendVerificationDTO) - // authController.resendVerificationEmail -); - -// POST /auth/verify-email - Verify email with token -router.post( - "/verify-email", - validateDto(VerifyEmailDTO) - // authController.verifyEmail -); - -// POST /auth/validate-wallet-format - Validate wallet address format -router.post( - "/validate-wallet-format", - validateDto(ValidateWalletFormatDto) - // authController.validateWalletFormat -); - -// POST /auth/verify-wallet - Verify wallet ownership -router.post( - "/verify-wallet", - validateDto(VerifyWalletDto) - // authController.verifyWallet -); - -export default router; diff --git a/src/routes/v2/organization.routes.ts b/src/routes/v2/organization.routes.ts deleted file mode 100644 index b58e338..0000000 --- a/src/routes/v2/organization.routes.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Router } from "express"; -import { - validateDto, - validateParamsDto, - validateQueryDto, -} from "../../shared/middleware/validation.middleware"; -import { CreateOrganizationDto } from "../../modules/organization/presentation/dto/create-organization.dto"; -import { UpdateOrganizationDto } from "../../modules/organization/presentation/dto/update-organization.dto"; -import { UuidParamsDto, PaginationQueryDto } from "../../shared/dto/base.dto"; -import auth from "../../middleware/authMiddleware"; - -const router = Router(); - -// Note: This is an example of how to properly integrate validation middleware -// The controller would need to be properly instantiated with dependencies - -// POST /organizations - Create organization -router.post( - "/", - validateDto(CreateOrganizationDto) - // organizationController.createOrganization -); - -// GET /organizations - Get all organizations with pagination -router.get( - "/", - validateQueryDto(PaginationQueryDto) - // organizationController.getAllOrganizations -); - -// GET /organizations/:id - Get organization by ID -router.get( - "/:id", - validateParamsDto(UuidParamsDto) - // organizationController.getOrganizationById -); - -// PUT /organizations/:id - Update organization (protected) -router.put( - "/:id", - auth.authMiddleware, - validateParamsDto(UuidParamsDto), - validateDto(UpdateOrganizationDto) - // organizationController.updateOrganization -); - -// DELETE /organizations/:id - Delete organization (protected) -router.delete( - "/:id", - auth.authMiddleware, - validateParamsDto(UuidParamsDto) - // organizationController.deleteOrganization -); - -export default router;