コンテンツにスキップ

データベース設定

プロジェクト初期化時点でAccellaは、データベースとしてSQLiteが利用できるよう設定されています。 これを変更しない場合は、この章をスキップしても問題ありません。 データベースエンジンにMySQLやPostgreSQLを使用したい場合、SQLiteの接続詳細を変更したい場合にはこの章を参照してください。

テーブル定義とマイグレーションにPrismaを使用し、ORMとしてAccel Recordを使用します。

データベースの初期化

設定を変更した後、データベースを初期化するには次のコマンドを実行します。

Terminal window
npx prisma migrate deploy

データベース設定の変更

このセクションでは、データベースエンジンの切り替えと接続詳細の指定方法について説明します。

SQLiteデータベースの変更

デフォルトでは、AccellaはSQLiteを使用するように設定されています。SQLiteデータベースを変更する手順は以下の通りです。SQLite接続にはbetter-sqlite3パッケージが使用されます。

  1. .envファイルのDATABASE_URLを変更して、希望するデータベースパスを指定します。

    .env
    DATABASE_URL="file:/path/to/dev.db"
  2. データベースを初期化して設定を完了します。

    Terminal window
    npx prisma migrate deploy

MySQLの使用

  1. 次のコマンドでmysql2パッケージをインストールします。

    Terminal window
    npm install mysql2
  2. db/schema/main.prismaファイルのprovidermysqlに変更します。

    db/schema/main.prisma
    datasource db {
    provider = "mysql" // ここを変更
    url = env("DATABASE_URL")
    }
  3. .envファイルのDATABASE_URLをMySQLの接続詳細に変更します。

    .env
    DATABASE_URL="mysql://root:@localhost:3306/accella_dev"
  4. データベースを初期化して設定を完了します。

    Terminal window
    npx prisma migrate deploy

PostgreSQLの使用

  1. 次のコマンドでpgパッケージをインストールします。

    Terminal window
    npm install pg
  2. db/schema/main.prismaファイルのproviderpostgresqlに変更します。

    db/schema/main.prisma
    datasource db {
    provider = "postgresql" // ここを変更
    url = env("DATABASE_URL")
    }
  3. .envファイルのDATABASE_URLをPostgreSQLの接続詳細に変更します。

    .env
    DATABASE_URL="postgresql://test:password@localhost:5432/accella_dev"
  4. データベースを初期化して設定を完了します。

    Terminal window
    npx prisma migrate deploy

テスト用データベースの設定

テスト用データベースの設定を変更するには、.env.testファイルのDATABASE_URLの値を変更します。 詳細はテストページを参照してください。

高度なデータベース設定

Accellaは、テーブル定義とマイグレーションにPrismaを使用します。Prismaのデータベース接続設定はdb/schema/main.prismaに記述されています。

db/schema/main.prisma
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}

ORMであるAccel Recordの初期化プロセスはsrc/config/initializers/database.tsに記述されています。

src/config/initializers/database.ts
import { initAccelRecord } from "accel-record";
import { getDatabaseConfig } from "../../models";
export default async () => {
await initAccelRecord(getDatabaseConfig());
};

これらのセクションを変更することで、より詳細な設定が可能です。詳細については、それぞれのドキュメントを参照してください。