0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PrismaとSupabaseの統合方法

Posted at

Prismaの使い方

結論: 新しいテーブル追加時の流れ

  1. Supabaseでテーブルを作成(SQLまたはダッシュボード)。
  2. prisma db pull を実行して新しいスキーマを取り込む。
  3. npx prisma generate を実行して
  4. Prisma Clientを再生成。
  5. コードで新しいテーブルを操作

これまでの流れと質問のポイント

  1. PrismaとSupabaseの統合方法:

    • PrismaをSupabaseに接続して既存のデータベースを扱いたい。
    • Supabaseのデータを削除せずに、Prismaで操作可能にする方法。
  2. 既存のテーブルをリセットせずに使いたい:

    • Prismaのマイグレーション機能を使う際、データやテーブルをリセットせずに既存テーブルを利用する方法を知りたい。
  3. prisma db pull を使ったスキーマ生成:

    • 既存データベースの構造をPrismaスキーマとして取得し、そのままPrismaで活用したい。
  4. やらなくてよいことが知りたい:

    • 特に既存テーブルがある場合、不要な操作(データやテーブルのリセットなど)を避ける方法。

既存のテーブルがある場合の基本方針

Prismaを既存のデータベースと統合する場合、以下を行います:

やるべきこと

  1. Prismaの初期設定

    npx prisma init
    
    • これにより、prisma/schema.prisma.env ファイルが生成されます。
  2. Supabaseの接続情報を設定

    • .env ファイルにSupabaseの接続情報を追加します:
      DATABASE_URL="postgresql://postgres:<password>@db.<project-ref>.supabase.co:5432/postgres"
      
  3. 既存のスキーマをPrismaに取り込む

    npx prisma db pull
    
    • 既存のデータベース構造が prisma/schema.prisma に反映されます。
    • このステップで既存のデータベースをリセットする必要はありません。
  4. Prisma Clientの生成

    npx prisma generate
    
    • Prisma Clientを生成し、コードからデータベースを操作できるようにします。
  5. Prismaでデータ操作

    • Prisma Clientを使用して、既存テーブルを操作します。
      const prisma = new PrismaClient();
      
      async function fetchQuizResults() {
          const results = await prisma.quizResults.findMany();
          console.log(results);
      }
      fetchQuizResults();
      

やらなくてよいこと

  1. 既存テーブルの削除やリセット

    • prisma migrate dev を実行しないでください。このコマンドはデータベース構造を変更し、競合がある場合にテーブルをリセットする可能性があります。
  2. データの再作成

    • 既存のデータはそのままで操作可能です。データベースをリセットして再構築する必要はありません。
  3. 不要なカラムやテーブルの削除

    • Prismaスキーマを調整する際、必要のないカラムやテーブルを削除する操作はデータベースに影響を与える可能性があります。
    • 必要に応じて、prisma db pull を再実行して最新状態を取得します。
  4. Supabase特有の拡張機能の無効化

    • Supabaseが提供する pgcrypto などのPostgreSQL拡張機能を無効にする必要はありません。Prismaはそれらを無視するため、特別な変更は不要です。

最終的な流れ(既存テーブルを活用する場合)

  1. Prismaのセットアップ:

    npx prisma init
    
    • 必要ファイル (schema.prisma, .env) を生成。
  2. Supabaseの接続設定:

    • .envDATABASE_URL を設定。
  3. 既存スキーマをインポート:

    npx prisma db pull
    
  4. Prisma Clientの生成:

    npx prisma generate
    
  5. 既存データベースの操作:

    • Prisma Clientを使い、データを安全に操作。

具体的にやらなくてよいことまとめ

  • prisma migrate dev を使ってテーブルを上書きまたは削除しない:
    • 既存テーブルがリセットされる可能性がある。
  • データベースのリセット操作をしない:
    • DROP SCHEMA などの操作は不要。
  • Supabaseの特定の拡張機能を無効化しない:
    • PrismaスキーマとSupabaseデータベースはそのまま整合できます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?