Modular Codebase
Adding every routes in one file can be hard to do. Luckily, you don't have to.
Anatomy of route groups
const authModule = {
login: /*...*/,
register: /*...*/,
}
const postsModule = {
getPost: /*...*/,
getPosts: /*...*/,
createPost: /*...*/,
deletePost: /*...*/,
}
const app = {
auth: authModule,
posts: postsModule,
}
export type Routes = typeof app;
Deeply nesting modules is also supported.
How to create modules
Cuple lets you do it your way, but if you are unsure here's an example:
Usually it make sense to have createSomeModule
function
that initializes the module with all of its dependencies and routes.
Example:
// index.ts
const routes = {
auth: createAuthModule(db, builder),
};
// modules/auth/index.ts
export function createAuthModule(db: PrismaClient, builder: Builder) {
return {
login: builder.post(async ({data}) => { /* login */ }),
register: builder.post(async ({data}) => { /* register */ }),
// ...
};
}