Uma dúvida bem simples. No minuto 5:20 a interface dentro desse arquivo não quebraria o conceito 'S' do SOLID?
Uma dúvida bem simples. No minuto 5:20 a interface dentro desse arquivo não quebraria o conceito 'S' do SOLID?
Olá Renan! Tudo joia?
A sua dúvida é bastante interessante e toca em um ponto importante do SOLID, especificamente o princípio da responsabilidade única (Single Responsibility Principle - SRP). O SRP sugere que uma classe ou módulo deve ter uma única razão para mudar, ou seja, deve ter apenas uma responsabilidade.
No contexto do Nest.js e da criação de um JWT, a interface UsuarioPayload
que você mencionou é utilizada para definir a estrutura do payload do JWT. A criação dessa interface dentro do mesmo arquivo onde o JWT é gerado pode, à primeira vista, parecer que estamos misturando responsabilidades, mas, na prática, ela serve apenas como um tipo para garantir a consistência dos dados.
Para manter o princípio do SRP, você poderia optar por definir essa interface em um arquivo separado, especialmente se ela for utilizada em diferentes partes do seu projeto. Por exemplo, você poderia criar um arquivo usuario-payload.interface.ts
e definir a interface lá:
// usuario-payload.interface.ts
export interface UsuarioPayload {
sub: string;
nomeUsuario: string;
}
E então importá-la onde for necessário:
import { UsuarioPayload } from './usuario-payload.interface';
// autenticacao.service.ts
const payload: UsuarioPayload = {
sub: usuario.id,
nomeUsuario: usuario.nome,
};
Dessa forma, você estaria separando as responsabilidades de maneira mais clara, o que é uma prática recomendada para manter o código organizado e aderente aos princípios do SOLID.
Espero ter ajudado e bons estudos!