1
/
5

Rust/ActixWeb で データベース(SeaORM 利用)の準備【株式会社ライトコード】

はじめに

Rust のお勉強、前々回/前回の続きです。
今回はデータベースの準備がメインとなります。

今回の動作環境

毎度の前回からの動作環境変更点。

バージョン(括弧内は前回)

Rust:1.81(1.78)

actix-web:4.9.0(4.5.1)

データベース接続

言わずもがな。
少々乱暴な解釈かもですが、アプリ/API は総じてデータベースのラッパーで、なので CRUD 操作してなんぼなんですよね。

actix の公式サイトでは Diesel というクレートを利用して DB 操作例が記載されてました。

Databases | Actix Web

なのでそれ使ってみよー、と思ったですが下記一文(英語)が目に止まりまして.

The current versions of Diesel (v1/v2) does not support asynchronous operations, so it is important to use the web::block function to offload your database operations to the Actix runtime thread-pool.

抜き出してみる。
Diesel does not support asynchronous.

訳してみる。
Diesel は非同期操作をサポートしていない。

oh.

actix、非同期処理が売りな web フレームワークなのに。

まぁはい。切り替えて非同期処理をサポートしてる DB ライブラリ(クレート)を探してみる。

非同期処理をサポートしてる DB ライブラリ(クレート)

調べましたら以下の 2 つがよく利用されている非同期対応の DB ライブラリ のようでした。

sqlx

  • ☆: 12.8k(24/8末時点)
  • ORM ではない
  • 複数 RDBMS 対応
  • マイグレーション機能有り

SeaORM

  • ☆: 6.9k(24/8末時点)
  • 上記 sqlx をベースに作られた ORM

個人的に ORM は苦手でして。生成/実行される SQL の確認が面倒ですし、N+1 対応とか頭使うしなので。
ですが今回は SeaORM を使ってみることにしました。

決め手はエンティティの自動生成です(自動生成してくれるみたいです)。

今回作る CRUD 処理の概要と準備

何でも良いのですが、オラクルでお馴染みの dept/emp テーブル  を作成し、それの CRUD 処理を書いていきます。
理由は特にないです。強いて言えば懐かしさ?

その他使用する RDBMS などまとめ。

  • RDBMS
    • postgres(16.4)
  • テーブル
    • 2テーブル
    • dept(部署)
    • emp(社員)
    • リレーション
    • dept 1 : N emp
  • API
    • deptのCRUD処理
    • empのCRUD処理

また準備として SeaORM のクレートを追加します。
使用する RDBMS、非同期ランタイムによって features に指定する値が異なるようです。
( ドキュメント を参考に設定)

cargo add sea-orm --features "sqlx-postgres, runtime-tokio-native-tls macros"

準備完了。ではやっていきます。

マイグレーション定義

まずはテーブルを作成します。マイグレーション 機能があるので利用します。

記事の続きは下のURLをクリック!

https://rightcode.co.jp/blogs/48806



エンジニア積極採用中です!

現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!

採用ページはこちら:https://rightcode.co.jp/recruit

社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life

社長と一杯飲みながらお話しませんか?(転職者向け)

特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk

もっとワクワクしたいあなたへ

現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!

ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。

有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。

  • もっと大きなことに挑戦したい!
  • エンジニアとしてもっと成長したい!
  • モダンな技術に触れたい!

現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?

ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。

  • ライトコードの魅力を知っていただきたい!
  • 社風や文化なども知っていただきたい!
  • 技術に対して熱意のある方に入社していただきたい!

一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。

Invitation from 株式会社ライトコード
If this story triggered your interest, have a chat with the team?
株式会社ライトコード's job postings

Weekly ranking

Show other rankings
Like Hiroyuki Choshi's Story
Let Hiroyuki Choshi's company know you're interested in their content