データ変換
todoアプリのリアルタイム機能の1つは、オンラインユーザーのリストの表示です。ユーザーが最後にオンラインにいた時刻を示す last_seen の値に基づいて、この情報を取得する方法が必要です。
これまで、テーブルとリレーションシップを構築していました。Postgresでは、次のものを使って、データ変換を実行できます。
- ビュー
- SQL関数
この例では、Views を利用します。このビューは、過去30秒にログインしオンラインになっているユーザーをアプリが検索するために必要です。
ビューを作成する
このビューを作成するためのSQLステートメントは、以下のようになります。
CREATE OR REPLACE VIEW "public"."online_users" ASSELECT users.id,users.last_seenFROM usersWHERE (users.last_seen >= (now() - '00:00:30'::interval));
このビューを追加して、Hasuraでビューを追跡して、クエリできるようにします。
コンソール -> DATA -> SQLページに移動します。

Run をクリックして、ビューを作成します。
オンラインユーザーへのサブスクリプション
サブスクリプションクエリを online_users ビューに作成して、テストしましょう。
subscription {online_users {idlast_seen}}
別のタブで、既存のユーザーの last_seen 値を更新して、サブスクリプション応答が更新されることを確認します。

last_seen 列の now() として値を入力して、Save をクリックします。
サブスクリプションクエリが実行されているタブに戻って、更新された応答を確認します。

Did you find this page helpful?
Start with GraphQL on Hasura for Free
Build apps and APIs 10x faster
Built-in authorization and caching
8x more performant than hand-rolled APIs





