Open1

Rust:Diesel

N.KOTANIN.KOTANI

概要

  • RustのORMライブラリ
  • 概要はこちら
  • 主な特徴
    1. 型安全なクエリ: Rustの型システムを利用して、SQLクエリを型安全に記述することができる。これにより、クエリの間違いをコンパイル時に検出でき、実行時のエラーを減少させます。
    2. マイグレーション: データベーススキーマの管理を簡素化するために、マイグレーション機能を提供します。これにより、スキーマの変更を追跡し、バージョン管理が可能になる。
    3. サポートされるデータベース: PostgreSQL、MySQL、SQLite
    4. 柔軟性: Dieselは、ORMとしての使用だけでなく、SQLクエリを直接記述することも可能であり、柔軟な使用が可能。

環境

Rust 1.72.1
cargo 1.72.1
Diesel 1.4.1
DieselCLI 1.4.1

利用フロー

  • 今回は、PostgreSQLを利用するので、PostgreSQLを導入済みとする。
  1. DieselCLIをインストールする

    cargo install diesel_cli@1.4.1  --no-default-features --features postgres
    
    • —no-default-features —features postgresは、PostgreSQLのみを使用する際に設定するオプション

      オプションを設定していないと、対応しているDBを全て取得する。

  2. データベースのURLを環境変数に設定する。

    export DATABASE_URL=postgres://[ユーザ名]:[パスワード]@localhost/[DB名]
    
  3. RustでDieselを利用するための初期設定を行い、プロジェクトのために必要なデータベーススキーマと設定ファイルを作成する。

    diesel setup
    
  4. マイグレーションファイルを作成する。

    diesel migration generate create_coffees
    

    実行すると、migrations/yyyy-MM-dd-hhmmss_create_coffeesフォルダが作成され、中に下記ファイルが作成される

    • up.sql
      • データベーススキーマを進めるためのSQLを記述する
    • down.sql
      • up.sqlで行った変更を取り消すためのSQLを記述する
  5. migrations/yyyy-MM-dd-hhmmss_create_coffees/up.sqlにテーブル作成のSQLを記述する

    CREATE TABLE coffes(
        id BIGSERIAL PRIMARY KEY,
        name VARCHAR NOT NULL,
        place VARCHAR NOT NULL
    )
    
  6. migrations/yyyy-MM-dd-hhmmss_create_coffees/down.sqlに、rollbackするSQLを記述する

    DROP TABLE coffes;
    
    • ロールバックをする際は、diesel migration revertコマンドを入力する。
  7. マイグレーションを実行する

    diesel migration run