graphql и реляционные базы данных, как моделировать теги с категориями - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть четыре таблицы

trip
|- id
|- name

weather_tag
|- id
|- name
|- weather_category_id

weather_category
|- id
|- name

bridge_trip_weather_tag
|- trip_id
|- weather_tag_id

Таблица bridge_trip_weather_tag является таблицей мостов, позволяющей установить связь между многими и многими trip и tag. tag_category группирует множество тегов по категориям.

Проблема, с которой я столкнулся при работе с graphQL, заключается в следующем:

query MyQuery {
  trip {
    name
    weather_tags{
        weather_tag{
        name
        weather_category {
          name
        }
      }
    }
  }
}

вывод:

{
    "trip": [
        {
            "name": "Breakfast",
            "weather_tags": [
            {
                "weather_tag": {
                "name": "Clear",
                "weather_category": {
                    "name": "conditions"
                }
            },
            {
            "weather_tag": {
              "name": "Partly Cloudy",
              "weather_category": {
                "name": "conditions"
              }
            }
          },
          {
            "weather_tag": {
              "name": "None",
              "weather_category": {
                "name": "precipitation"
              }
            }
          }
        }
    ]
}

Где я хотел бы запросить что-то как это

query MyQuery {
  trip {
    name
    weather_tags{
        weather_category{
        name
        weather_tags {
          name
        }
      }
    }
  }
}

, чтобы дать что-то вроде этого желаемого результата, где weather_category является родителем для weather_tags

{
    "trip": [
        {
            "name": "Breakfast",
            "weather_category": [
                {
                    "conditions": {
                        "weather_tags": [
                            {
                            "name": "Clear"  
                            },
                            {
                            "name": "Partly Cloudy"
                            }
                        ],
                    },
                    "precipitation": {
                        "weather_tags": [
                            {
                            "name": "None"  
                            },
                        ]
                    }
                }
            ]
        }
    ]
}

БД структурирована таким образом, что мне нужно будет только связать тег нижнего уровня с поездкой, а затем категория с тегом - категория вообще не связана с поездкой. Любые идеи, как я должен структурировать мою БД для достижения этого результата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...