Ответ
Нет, доменный слой должен оставаться чистым и не зависеть от внешних сервисов, инфраструктуры или фреймворков. Это ключевой принцип чистой архитектуры. Все внешние зависимости (БД, HTTP-клиенты и т.д.) должны инжектироваться через интерфейсы в слои приложения/инфраструктуры.
Пример:
// Доменный слой
type OrderRepository interface {
Save(order Order) error
}
// Инфраструктурный слой (Postgres реализация)
type PostgresOrderRepo struct {
db *sql.DB
}
func (r *PostgresOrderRepo) Save(order Order) error {
// Реализация с SQL-запросами
}
Такой подход обеспечивает тестируемость и возможность замены реализации без изменения доменной логики.