diff --git a/src/index.ts b/src/index.ts index 9c1f7a1..4db0e8f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,7 @@ import { Elysia } from "elysia"; +import { routes } from "./routes"; -const app = new Elysia().get("/", () => "Hello Elysia").listen(3000); +const app = new Elysia().use(routes).listen(3200); console.log( `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}` diff --git a/src/modules/user/controller/getAllUser.controller.ts b/src/modules/user/controller/getAllUser.controller.ts index e69de29..2ff5c61 100644 --- a/src/modules/user/controller/getAllUser.controller.ts +++ b/src/modules/user/controller/getAllUser.controller.ts @@ -0,0 +1,5 @@ +import Elysia from "elysia"; + +export const getAllUser = (ctx: Elysia) => { + return "Hello User Module"; +}; diff --git a/src/modules/user/index.ts b/src/modules/user/index.ts index e69de29..3a2b134 100644 --- a/src/modules/user/index.ts +++ b/src/modules/user/index.ts @@ -0,0 +1,6 @@ +import Elysia from "elysia"; +import { getAllUser } from "./controller/getAllUser.controller"; + +export const userModule = new Elysia({ prefix: "/users" }) + .get("/", () => "Hello User Module") + .post("/", () => getAllUser); diff --git a/src/modules/userRole/controller/createUserRole.controller.ts b/src/modules/userRole/controller/createUserRole.controller.ts index 8451972..dfdc25b 100644 --- a/src/modules/userRole/controller/createUserRole.controller.ts +++ b/src/modules/userRole/controller/createUserRole.controller.ts @@ -1,5 +1,5 @@ import { Context } from "elysia"; export const createUserRole = (ctx: Context) => { - return "OKOK"; + return "Hello User Role Module"; }; diff --git a/src/modules/userRole/index.ts b/src/modules/userRole/index.ts index 7cc3387..1fb3c22 100644 --- a/src/modules/userRole/index.ts +++ b/src/modules/userRole/index.ts @@ -1,6 +1,6 @@ import Elysia from "elysia"; import { createUserRole } from "./controller/createUserRole.controller"; -export const userRoleModule = new Elysia({ prefix: "/user-role" }) +export const userRoleModule = new Elysia({ prefix: "/roles" }) .get("/", () => "Hello User Role Module") - .post("/create", createUserRole); + .post("/", createUserRole); diff --git a/src/routes.ts b/src/routes.ts index 0b3fcc1..9949626 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -1,4 +1,32 @@ import Elysia from "elysia"; -import { userRoleModule } from "./modules/userRole"; +import { pathToFileURL } from "bun"; +import { readdirSync } from "fs"; +import { join } from "path"; -export const routes = new Elysia().use(userRoleModule); +const routes = new Elysia(); + +const modulesPath = join(__dirname, "./modules"); + +for (const folder of readdirSync(modulesPath, { withFileTypes: true })) { + if (folder.isDirectory()) { + const moduleIndex = join(modulesPath, folder.name, "index.ts"); + + try { + const module = await import(pathToFileURL(moduleIndex).href); + + const mod = Object.values(module).find( + (m): m is Elysia => m instanceof Elysia + ); + + if (mod) { + routes.use(mod); + } + } catch (error) { + console.warn( + `Module ${folder.name} not found. Please check the module path or name.` + ); + } + } +} + +export { routes };