【问题标题】:How to set filtered array relationship in Hasura based on a different table如何根据不同的表在 Hasura 中设置过滤数组关系
【发布时间】:2022-06-11 01:33:49
【问题描述】:

我正在尝试通过引用 Hasura 中的另一个表来过滤结果。 但我无法绕过它。可以用函数或视图来完成还是不可能?

这是我的桌子;

提供者

id name
1 Epic
2 EA
3 Valve

游戏

id name
10 Half Life
11 Counter Strike
12 Apex Legends
13 Fifa

网站

id name providers categories users
20 Playnow.com array relatioship array relatioship array relatioship
21 play.com

用户

id username site_id
30 tester 1 20
31 tester 2 21

类别

id title site_id games
40 FPS 20 array relatioship
41 Sport 21 array relatioship

除了这些表之外,我还有关系表来创建数组关系。

  • provider_games - 提供商和游戏之间的关系。
    • provider_id,
    • game_id
  • site_providers - 网站和提供商之间的关系。 (网站可用的提供商)
    • site_id,
    • provider_id
  • game_category - 哪些游戏属于哪些类别。
    • game_id,
    • category_id
  • user_banned_games - 此表是用户不允许玩的游戏 ID 的列表。
    • game_id,
    • user_id
  • site_disabled_games - 此表包含网站所有者不希望其用户玩的游戏。
    • site_id,
    • game_id

我有一个全球供应商列表,其中一些供应商可供某些网站访问,一旦供应商可供网站使用,所有游戏都可供其用户访问。但在某些时候,网站所有者可能希望为其用户或仅为特定用户禁用特定游戏。

用户可以按提供商或类别浏览游戏。 我可以与 Hasura 的默认关系系统建立关系,但我不能将被禁止或禁用的游戏添加到等式中。

旁注:我在其 JWT 令牌中获得了用户的站点 ID。

下面有一个示例查询,但我需要的是“_nin”值应该是用户的 site_id 从 site_disabled_games 和 user_banned_games 获取的 id 集合。客户端不知道哪些ID被屏蔽了。

query getCategoriesWithGames {
  getCategories {
    id
    name
    shortname
    casino_id
    isActive
    games(where: {game_id: {_nin: 10}}, limit: 10) {
      game {
        name
        provider {
          name
        }
      }
    }
  }
}

【问题讨论】:

  • 您能否详细说明您要完成的确切查询?也许展示一些 GQL 查询的示例,这些查询与您想要实现的目标很接近,但效果不佳。您的问题中有很多很好的信息,但通过阅读它并不能完全清楚您到底想做什么以及遇到什么障碍

标签: sql postgresql stored-procedures hasura


猜你喜欢
  • 2022-12-01
  • 2021-05-21
  • 2019-10-25
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2023-03-31
  • 2019-10-09
相关资源
最近更新 更多