データ変換
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

