Пример использования CQRS:
В этом примере команды (CreateUserCommand) и запросы (GetUserQuery) обрабатываются отдельно с помощью соответствующих обработчиков (CreateUserCommandHandler и GetUserQueryHandler). Это позволяет эффективно управлять операциями записи и операциями чтения в приложении, а также использовать различные модели данных и подходы к их обработке.
// Пример реализации CQRS в TypeScript
// Команда для создания нового пользователя
class CreateUserCommand {
constructor(public username: string, public email: string) {}
}
// Обработчик команды создания пользователя
class CreateUserCommandHandler {
handle(command: CreateUserCommand) {
// Логика создания нового пользователя
console.log(Creating user: ${command.username});
}
}
// Запрос для получения информации о пользователе
class GetUserQuery {
constructor(public userId: string) {}
}
// Обработчик запроса информации о пользователе
class GetUserQueryHandler {
handle(query: GetUserQuery) {
// Логика получения информации о пользователе
console.log(Getting user info for user with ID: ${query.userId});
return { userId: query.userId, username: 'John Doe', email: '[email protected]' };
}
}
// Использование команд и запросов
const createUserCommand = new CreateUserCommand('johndoe', '[email protected]');
const createUserHandler = new CreateUserCommandHandler();
createUserHandler.handle(createUserCommand);
const getUserQuery = new GetUserQuery('123');
const getUserHandler = new GetUserQueryHandler();
const userInfo = getUserHandler.handle(getUserQuery);
console.log(userInfo);
В этом примере команды (CreateUserCommand) и запросы (GetUserQuery) обрабатываются отдельно с помощью соответствующих обработчиков (CreateUserCommandHandler и GetUserQueryHandler). Это позволяет эффективно управлять операциями записи и операциями чтения в приложении, а также использовать различные модели данных и подходы к их обработке.