Skip to content

Simple Modules Example

simple-modules/
├── user/
│ ├── User.ts
│ ├── IUserRepository.ts
│ ├── UserRepository.ts
│ ├── IUserService.ts
│ └── UserService.ts
├── todo/
│ ├── Todo.ts
│ ├── ITodoRepository.ts
│ ├── TodoRepository.ts
│ ├── ITodoService.ts
│ └── TodoService.ts
├── ioc.config.json
├── container.gen.ts
└── demo.ts
{
"source": ".",
"output": "container.gen.ts",
"exclude": ["**/*.test.ts", "**/*.spec.ts"],
"verbose": true,
"modules": {
"UserModule": ["user/**"],
"TodoModule": ["todo/**"]
}
}
export class TodoService implements ITodoService {
constructor(
private todoRepository: ITodoRepository,
private userRepository: IUserRepository
) {}
async createTodo(title: string, userId: string): Promise<Todo> {
const user = await this.userRepository.findById(userId);
if (!user) {
throw new Error('User not found');
}
return await this.todoRepository.create(title, userId);
}
}
import { container } from './container.gen';
const userService = container.userModule.UserService;
const user = await userService.createUser('John Doe', 'john@example.com');
const todoService = container.todoModule.TodoService;
const todo = await todoService.createTodo('Learn modules', user.id);