Cache dentro do Observer
[Concluído]
arlos, seria uma boa pratica desenvolver e programar o cache no observer ?
Por exemplo ao criar ou registro no created do observer fazer um forget do cache e depois persistir novamente no redis pelo created mesmo.
Algo + - assim:
digo colocar esse codigo abaixo no created do
public function created(Account $account){
$userId = auth()->user()->id;
Cache::forget("account-{$account->uuid}");
Cache::forget("accounts-{$userId}");
Cache::forever("account-{$account->uuid}", $account);
}
Entendo que a finalidade do observer seja disparar alguns eventos quando um model foir acionado. Se não for isso e puder me explicar de uma outra forma eu ficari a grato
Olá, Guilherme!
Tudo bem?
Não vejo problemas deixar dessa forma, o único problema é que o Observer está ligado ao model, se um dia por exemplo trocar de ORM (coisa que dificilmente acontece), você precisa reescrever essa lógica.
Talvez, faz mais sentido você criar um service layer, e jogar essa responsabilidade de trabalhar com caches nessa camada, assim você não está mais refém do ORM. Pegou a ideia amigo?
hmm entendi
é uma boa ideia tbm
pq penso q colocar essa logica direto na camada de repository a gente acaba ferindo o principio de responsabilidade unica não é ?
criar uma service layer para o meu model e nesse serviço mesmo eu devo fazer o cache ?
Refletindo aqui, acabei pensando em uma outra forma. Pensei em utilizar os eventos do laravel o que você acha ? (Isso seria considerado uma boa pratica ?)
Ja que o cache faz parte da minha aplicação mas não necessariamente deveria estar acoplado a algum service.
Não sei se vc conseguiu me entender bem kkkk
tive essa ideia lendo o exemplo de events na doc do laravel, naquele exemplo de desacoplar a notificação.
Se usar os eventos, cai no mesmo caso, porque os eventos estão relacionados ao Model/Eloquent
Cria uma camada service mesmo, com o seu service para trabalhar com cache, e usa ele, pode injetar direto no repository mesmo.
hmm vdd ainda ss fica atrelado ao eloquent
mas e bem o que você comentou, e muito incomum trocar o ORM da aplicação.
E outra a ideia de usar laravel e meioq intuitivo usar o eloquent tbm
blz vou fazer uma service e injetar na repository
derrepente posso até fazer um package disso ja q seria algo eu usaria em mais de um projeto.
Show de bola amigo, qualquer dúvida estou à disposição. TMJ!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!