Bom pessoal, no vídeo anterior a gente falou rapidamente sobre CQS, que é quando dentro de um sistema você tem comandos e esses comandos que são executados e que normalmente gravam alguma coisa ou que executam alguma coisa, nunca vão responder com uma resposta, nunca vão consultar dados para retornar uma resposta. Eles somente executam e acabou. Legal? Agora, quando a gente está falando sobre CQRS, a gente dá um passo além em relação a isso. E a gente separa o nosso sistema completamente. Lembre-se, com CQRS a gente estava falando inclusive de métodos, ou seja, algo mais interno do sistema. E o CQRS a gente está falando, inclusive, de métodos, ou seja, algo mais interno do sistema. E o CQRS a gente está falando de algo, inclusive, mais arquitetural. Por quê? Porque eu tenho na metade de um sistema comandos, ou seja, o que são comandos? São intenções do usuário. Processar pagamento, criar cliente né a inserir uma categoria tudo isso são comandos ou seja são uma intenção do sistema agora o grande ponto que poucas pessoas falam quando estão falando sobre cqrs e eles não trazem esse nível de profundidade, na hora que eu vou explicar, é o que eu vou mostrar agora aqui para vocês, que é quando um comando é executado, esse comando aqui vai ter que fazer o quê? Processar regras de negócio, ele vai ter que falar com um banco de dados, ele vai ter que fazer um monte de coisa. Então, quando esse comando chega nesse sistema, você vai perceber que aqui você vai ter que ter o seu modelo de domínio você tem os seus agregados e tem os seus velhos o object você tem os seus repositórios tá você tem um monte de informação importante tá pra que pra conseguir trabalhar com essas informações tá ou seja essa parte do sistema, ela normalmente deveria, ou seria recomendado ela ter o quê? Uma modelagem rica de domínio. Porque essa parte do sistema é a parte onde dados são processados. Vamos imaginar que eu estou mandando uma informação para fazer uma simulação de cálculo de juros. Então eu mando o quanto que eu quero financiar, em quantas vezes, mando esse comando, esse sistema passa por todas as regras de negócio e grava, por exemplo, no banco de dados, todas as parcelas que o cara vai pagar de juros ali para ele. Mas perceba, aqui é o ponto importante quando limite comando e essas parcelas são gravadas no banco de dados acabou o processo aí os dados dessas parcelas não são retornados para o usuário final então o comando o que faz? Ele apenas executa a informação e acabou. Ele nunca vai trazer de volta o resultado dessa operação para o usuário final. Bacana? Se deu erro, ele vai tratar, gerar algum evento para você reprocessar depois. Se deu certo, beleza beleza ele vai gravar vai fazer o processamento dele e acabou também então essa parte de comando normalmente ela sempre vai ser bastante complexa porque porque é aqui que mora o coração do software tá e é por isso que trabalhar com comandos é importante você ter essa clareza que por trabalhar com comandos é importante você ter essa clareza, que por trás dos comandos, normalmente você tem as regras de negócio da sua aplicação. Bacana? Agora, da mesma forma que eu tenho os comandos, eu tenho as queries. Por isso que a gente chama de Command Query Responsibility Segregation. Ele segrega a responsabilidade entre comandos e consultas. Agora, vamos imaginar que o usuário agora quer saber as parcelas que ele vai pagar dos juros do financiamento que ele fez. Primeira coisa, um comando foi executado e agora uma consulta vai ser executada. Essa consulta vai fazer o quê? Ela vai lá no banco de dados e trazer essa informação num determinado padrão. Agora, perceba. Essa camada aqui, não necessariamente, vai ter que ter regra de negócio. Ela tem que retrabalhar, retornar agregados trabalhar com repositórios porque porque ela só lê essa camada é muito rápida ela pega o dado a gente fala qual o formato que o gado quer trabalhar e você vai buscar no banco de dados retorna o resultado no formato que você quer acabou não tem regra de domínio não tem nada é uma busca simples tá nesse caso você não tem que trabalhar com o domingo design não vai trabalhar com repositórios normalmente aí você vai trabalhar com da ou com coisas desse tipo porque porque você vai querer apenas consultar os dados e retornar para o usuário final tá então muita gente quando vai explicar se é que rs só mostra o comando ea consulta mas esquece de falar que os comandos normalmente eles vão conter aqui essa área do sistema onde tem as regras de negócio mas as consultas não necessariamente vão ter que ter isso tá porque porque aqui ele só traz dados você vai ser muito bom de qual é o sql negócio, mas as consultas não necessariamente vão ter que ter isso, tá? Por quê? Porque aqui ele só traz dados. Você vai ser muito bom de query SQL, sei lá o quê, para trazer as informações sem ter que passar pela complexidade das regras de negócio da aplicação. Bacana? Então, essa era a ideia principal quando eu queria falar sobre CQqrs mas agora a gente vai começar a falar um pouco sobre banco de dados e cqrs porque aí a coisa começa a esquentar beleza vamos nessa