170 похожих чатов

Добрый вечер! Есть тут кто шарит за clean architecture? У меня

такой кейс: модели, в зависимости от типа, по-разному работают с репозиторием, через разные методы (напрммер - по-разному хранятся, где-то как одна запись в таблице, где-то как целая таблица, говоря словами реляционных бд).

Вопрос, где хранить логику работы модели с бд? Я планировал создать по классу под каждый тип модели, в него передавать интерфейс репозитория и решать, каким именно методом оперировать.
Проблема: по правилам чистой архитектуры, внутренние слои не должны знать о внешних.

3 ответов

7 просмотров

В твоем примере я не понял, каким образом ты узнаешь про внешний слой, если твои "классы" принимают параметром интерфейс репозитория?

Логику работы модели с БД реализуют в репозитории. Методы репозитория могут принимать на вход модели и могут возвращать модели, соответственно репозиторий знает все о устройстве моделей. Имплементация репозитория находится в слое инфраструктуры, поэтому он может оперировать моделями не нарушая направления зависимостей.

SaveData(db *sql.DB, data *DataClass) OpenDataByID(db *sql.DB, data *DataClass) и т.д. Словосочетание "чистая архитектура" нужно знать только лишь для того, чтобы идиоты на собеседовании услышали от вас то, что они хотят услышать. К программированию это ни какого отношения не имеет

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
Коллеги, как получить PId для собственного процесса из под линукса?
Роман Лях (rgreat)
6
Карта сайта