Пример использования CQRS:



// Пример реализации 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). Это позволяет эффективно управлять операциями записи и операциями чтения в приложении, а также использовать различные модели данных и подходы к их обработке.