Camada de Domínio¶
Esta é a camada mais interna e contém as regras de negócio essenciais da aplicação (Entidades) e as abstrações para interações com o mundo exterior (Interfaces de Repositório e Gateways). Ela é completamente independente de qualquer framework ou banco de dados.
Entidades¶
project/core/domain/entities/user.py
: Criada a entidadeUser
para representar um usuário de forma agnóstica a frameworks, contendo apenas os atributos e métodos de domínio (ex:email
,first_name
,is_admin
). Esta entidade não herda dedjango.db.models.Model
.
Interfaces de Acesso a Dados (Repositories)¶
project/core/domain/data_access.py
: Criada a interface abstrataUserRepository
, que define os métodos que qualquer repositório de usuário deve implementar (ex:get_user_by_id
,create_user
,get_all_users
).
Interfaces de Gateways (Auth, etc.)¶
project/core/domain/gateways.py
: Criada a interface abstrataAuthGateway
, que define métodos para operações de autenticação comocheck_password
,create_tokens
, eset_password
.