21
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RustでDBを扱うときのベストプラクティス

Last updated at Posted at 2018-10-03

はじめに

RustでDBといったらDieselですが、色々ややこしいですよね、こいつ。
なので自分なりのルールというか、Tipsをまとめようと思います。
大層なタイトルつけといてなんですが、これ全然ベストプラクティスじゃないです
なので、あなたのプラクティスを教えてください!
都度更新していきたいと思います。

特定の環境でしか使えないようなmigration codeは書かない

たとえPostgresを使うことが決まっていたとしても、テストなどで SQLite が活躍するので。

例えば、以下のようなSQLはよくない

CREATE TABLE posts (
  id SERIAL PRIMARY KEY
)

SERIALはPosgresでしか使えない。
SERIALの代わりにINTEGERを使う。
必要なら AUTO INCREMENTつける。

CREATE TABLE posts (
  id INTEGER PRIMARY KEY
)

最初はSQLite環境でデバッグを行う

SQLのデバッグとか。
前まではDockerで立てたりしてたんだけど、こっちの方が早い。

$ diesel setup --database-url db.sqlite3
$ diesel migration generate --database-url db.sqlite3
$ diesel migration run --database-url db.sqlite3
$ diesel print-schema --database-url db.sqlite3

テストではSQLiteのin memory版を使う

SqliteConnection::establish(":memory:").unwrap()

便利

diesel.tomlファイルを使う

diesel setupを行うと、デフォルトのdiesel.tomlファイルができあがる。

今の所はprint_schemaセクションしかないみたいだけど。
fileフィールドは絶対使う。

これは、$ diesel print-schema のたびにそこにschema情報が書かれるというもの。

Migrationをプログラムで行うときはdiesel_migrationsを使う

diesel_migrations

テストのときとかね。
そもそも migration をプログラム上で行うのはアンチパターンなのだろうか。
教えて欲しい。

21
13
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
21
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?