Задать вопрос

Слой доступа к данным для многоязычной БД?

Предположим, есть БД с подобной структурой:
5b392747e8bcf353740909.jpeg

Приложение, которое будет работать с БД представляет из себя API. Пользователи API могут запрашивать посты следующим образом: /posts/1/?language=ru. В результате пользователь должен получить модель такого вида:
{
    "id": 1,
    "category": {
        "id": 5,
        "name": "ru_category"
    },
    "title": "ru_title",
    "text": "ru_text",
    "created_at": "date"
}


Если запрашиваемого перевода не существует, API должен вернуть перевод по умолчанию (например, на английском языке).

Как лучше реализовать слой доступа к данным? Один из вариантов - реализовать репозитории для таблиц сущностей и для таблиц переводов. Тогда BlogPostsRepository будет получать информацию о постах, которая в переводе не нуждается, а BlogPostTranslationsRepository будет получать информацию о переводах постов.
Для возвращения модели, рассмотренной выше, придется получить информацию о посте, затем информацию о переводах поста (на запрашиваемом языке + на языке по умолчанию), затем такие же операции провести для категорий, после чего смаппить это все на одну модель и отдать пользователю.
В этом варианте меня смущает слишком большое количество операций. В случае, когда с постами связано больше таблиц (например, комментарии, теги и т.д.), запросов получится еще больше.
  • Вопрос задан
  • 162 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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