В рамках написания проекта дошел до описания пула БД. В момент изучения темы встал вопрос, есть ли смысл в полной абстракции от БД. Что я имею в виду:
Первый пример.
Интерфейс пула запрашивает необходимые методы, которые завязаны на конкретной реализации pgx.
type DBPool interface {
QueryRow(ctx context.Context, sql string, args ...any) pgx.Row
Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error)
Exec(ctx context.Context, sql string, args ...any) (pgconn.CommandTag, error)
}
А второй пример заключается в том, что мы будем в методах интерфейса возвращать стандартные типы, не завязанные на какой-либо конкретной реализации.
В связи с чем я задаюсь вопросом. Приходилось ли Вам опираться на полную абстракцию? Есть ли какой-то весомый выигрыш от этого в разработке?
Заранее извиняюсь в возможных неточностях моего объяснения, так как сам еще "плаваю" в этой теме