Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Supabaseの紹介

Avatar for Yohei Iino Yohei Iino
October 01, 2023

 Supabaseの紹介

Avatar for Yohei Iino

Yohei Iino

October 01, 2023
Tweet

More Decks by Yohei Iino

Other Decks in Technology

Transcript

  1. 自己紹介 📝 飯野陽平(wheatandcat) 🏢 法人設立(合同会社UNICORN 代表社員) 💻 Work: シェアフル株式会社CTO 📚

    Blog: https://www.wheatandcat.me/ 🛠 今までに作ったもの memoir ペペロミア MarkyLinky
  2. コード 以下のようなコードで認証は実装可能[1] const handleOAuthLogin = async (provider: Provider, scopes =

    "email") => { await supabase.auth.signInWithOAuth({ provider, options: { scopes, redirectTo: location.href } }) } 略) // ログイン後は以下から認証情報を取得できる const { data, error } = await supabase.auth.getSession() 1. Learn More
  3. コード 以下のようなコードで認証は実装可能[1] const handleOAuthLogin = async (provider: Provider, scopes =

    "email") => { scopes, await supabase.auth.signInWithOAuth({ provider, options: { redirectTo: location.href } }) } 略) // ログイン後は以下から認証情報を取得できる const { data, error } = await supabase.auth.getSession() 1. Learn More
  4. コード 以下のようなコードで認証は実装可能[1] const { data, error } = await supabase.auth.getSession()

    const handleOAuthLogin = async (provider: Provider, scopes = "email") => { await supabase.auth.signInWithOAuth({ provider, options: { scopes, redirectTo: location.href } }) } 略) // ログイン後は以下から認証情報を取得できる 1. Learn More
  5. コード 以下のようなコードで認証は実装可能[1] const handleOAuthLogin = async (provider: Provider, scopes =

    "email") => { await supabase.auth.signInWithOAuth({ provider, options: { scopes, redirectTo: location.href } }) } 略) // ログイン後は以下から認証情報を取得できる const { data, error } = await supabase.auth.getSession() 1. Learn More
  6. Databaseのセキュリティポリシーの設定① 以下のSQLを実行して、tableを作成 create table public.items ( id integer not null

    default nextval('items_id_seq'::regclass), user_id uuid not null, title text not null, url text not null, favIconUrl text null, created timestamp with time zone not null default current_timestamp, constraint items_pkey primary key (id) ) tablespace pg_default;
  7. Databaseの型安全② 先程作成したファイルをimportして、型情報を設定する これで補完が効くようになる import { createClient } from "@supabase/supabase-js"; import

    type { Database } from "../schema"; export const supabase = createClient<Database>( process.env.PLASMO_PUBLIC_SUPABASE_URL, process.env.PLASMO_PUBLIC_SUPABASE_KEY, );
  8. Databaseの型安全② 先程作成したファイルをimportして、型情報を設定する これで補完が効くようになる import type { Database } from "../schema";

    import { createClient } from "@supabase/supabase-js"; export const supabase = createClient<Database>( process.env.PLASMO_PUBLIC_SUPABASE_URL, process.env.PLASMO_PUBLIC_SUPABASE_KEY, );
  9. Databaseの型安全② 先程作成したファイルをimportして、型情報を設定する これで補完が効くようになる export const supabase = createClient<Database>( import {

    createClient } from "@supabase/supabase-js"; import type { Database } from "../schema"; process.env.PLASMO_PUBLIC_SUPABASE_URL, process.env.PLASMO_PUBLIC_SUPABASE_KEY, );
  10. Databaseの型安全② 先程作成したファイルをimportして、型情報を設定する これで補完が効くようになる import { createClient } from "@supabase/supabase-js"; import

    type { Database } from "../schema"; export const supabase = createClient<Database>( process.env.PLASMO_PUBLIC_SUPABASE_URL, process.env.PLASMO_PUBLIC_SUPABASE_KEY, );
  11. その他の特徴 簡単にローカル環境が構築できる 参考: Supabaseのローカル開発環境構築 DB操作の基本APIを自動生成してくれる 参考 Serverless APIs リアルタイムリスナーをサポート 参考:

    Supabase JSのリアルタイムリスナーを使ってみる 有料版なら自動でバックアップを取ってくれる 参考: Pricing & fees | Supabase