[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Guilherme Seganzerla
Criador Guilherme Seganzerla 16/02/2022

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 

Manager Carlos Ferreira 16/02/2022

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?

Carlos Ferreira
Criador Guilherme Seganzerla 16/02/2022

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.

Guilherme Seganzerla
Manager Carlos Ferreira 16/02/2022

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.

Carlos Ferreira
Criador Guilherme Seganzerla 16/02/2022

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.

Guilherme Seganzerla
Manager Carlos Ferreira 16/02/2022

Show de bola amigo, qualquer dúvida estou à disposição. TMJ!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!