Validação de exclusividade ao usar CQRS e fornecimento de eventos
Estou tentando implementar minha própria infraestrutura CQRS com o Event Sourcing para aprender melhor. Como exemplo de projeto, estou implementando um mecanismo de blog, sei que pode não ser um ajuste perfeito, mas só quero trabalhar em algo real.
O problema que eu vim agora é a validação. Cada post tem umshortUrl
, e ashortUrl
deve ser único, mas onde devo colocar essa validação no domínio? Sei que terei essa validação antes mesmo de enviar o comando, lendo no meu repositório de leitura, para verificar se ele é válido ao criar um comando create post ou update post comman
Eu consigo pensar em duas "soluções"
Tenha umBlog
agregado que controla todas as configurações relacionadas ao blog e também faz referência a todas as postagens. Mas o problema com isso aos meus olhos é que eu tenho que lidar com a comunicação entre agregados nesse cenário e toda vez que preciso validar a exclusividade de umshortUrl
Preciso ler todos os eventos da loja de eventos para criar todas as postagens e isso parece complicad A segunda alternativa que eu tenho é quando o evento é disparado e meu manipulador de eventos que cria o modelo de leitura dispara um evento duplicado de URL curta quando percebe que ele terá duas URLs curtas que apontam para postagens diferentes. É válido ter o modelo de leitura para disparar eventos quando detectar erros?Existem mais alternativas. Observe que sei que meu domínio pode não ser o mais adequado para cqrs e DDD, mas estou fazendo isso para aprender em um domínio pequeno.