10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Supabaseの開発をする際にSupabase CLIを用いることでとても簡単にローカルでの開発が可能になります。

また、supabaseフォルダ直下にseed.sqlを作成しておけばローカル環境を立ち上げた際にマイグレーションから初期データの投入までセットで行ってくれます。

アプリケーションで認証機能を用いている場合、Authenticationの初期データも投入したいはずです。

簡易的な記事になってしまいますが、以下のクエリをsupabase/seed.sqlの冒頭に記載することでメール認証のユーザーのテストデータを作成することができます。

seed.sql
WITH credentials(id, mail, pass) AS (
  -- 5人のユーザーのUUID、メールアドレス、パスワードをここに記載します。
  SELECT * FROM (VALUES 
    ('123e4567-e89b-12d3-a456-426614174000', 'user1@example.com', 'password1'), 
    ('123e4567-e89b-12d3-a456-426614174001', 'user2@example.com', 'password2'), 
    ('123e4567-e89b-12d3-a456-426614174002', 'user3@example.com', 'password3'), 
    ('123e4567-e89b-12d3-a456-426614174003', 'user4@example.com', 'password4'), 
    ('123e4567-e89b-12d3-a456-426614174004', 'user5@example.com', 'password5')
  ) AS users(id, mail, pass)
),
create_user AS (
  INSERT INTO auth.users (id, instance_id, ROLE, aud, email, raw_app_meta_data, raw_user_meta_data, is_super_admin, encrypted_password, created_at, updated_at, last_sign_in_at, email_confirmed_at, confirmation_sent_at, confirmation_token, recovery_token, email_change_token_new, email_change)
    SELECT id::uuid, '00000000-0000-0000-0000-000000000000', 'authenticated', 'authenticated', mail, '{"provider":"email","providers":["email"]}', '{}', FALSE, crypt(pass, gen_salt('bf')), NOW(), NOW(), NOW(), NOW(), NOW(), '', '', '', '' FROM credentials
  RETURNING id
)
INSERT INTO auth.identities (id, provider_id, user_id, identity_data, provider, last_sign_in_at, created_at, updated_at)
  SELECT gen_random_uuid(), id, id, json_build_object('sub', id), 'email', NOW(), NOW(), NOW() FROM create_user;

諸々カスタムしたい場合は、こちらの箇所を修正してください。

WITH credentials(id, mail, pass) AS (
  -- 5人のユーザーのUUID、メールアドレス、パスワードをここに記載します。
  SELECT * FROM (VALUES 
    ('123e4567-e89b-12d3-a456-426614174000', 'user1@example.com', 'password1'), 
    ('123e4567-e89b-12d3-a456-426614174001', 'user2@example.com', 'password2'), 
    ('123e4567-e89b-12d3-a456-426614174002', 'user3@example.com', 'password3'), 
    ('123e4567-e89b-12d3-a456-426614174003', 'user4@example.com', 'password4'), 
    ('123e4567-e89b-12d3-a456-426614174004', 'user5@example.com', 'password5')
  ) AS users(id, mail, pass)
),

左から、UUID型、TEXT型、TEXT型のデータを投入してください。
UUID型はuser-id-1234のようになんでもいいわけではなく、postgreSQLに準拠した形式で指定してください。

面倒であれば11111111-1111-1111-1111-111111111111のようにしてもいいですが、検索をするとUUID生成ツールのようなものもあるのでそちらを用いても良いかと思います。

(筆者はChatGPTに作ってもらいました)

あとはusersテーブルのidなどに上記で指定したUUIDをセットしてseederデータの作成を進めてください。

10
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?