Sequelize with TypeScriptと Migration時のSSH Tunnelの設定

SequelizeはNode.jsで動作するORMだ。

TypeORMとどちらを採用するか迷ったが、issueの数がSequelizeが0.8kとTypeORMが2kだったので、今回はSequelizeを採用した。

Sequelizeはv6でTypeScriptをサポートしているがモデル等は自力で実装・定義する必要がある。

また、DBのMigrationもこちらのSequelizeで行うことができるがTypeScriptでの生成やMigration実行はサポートしていない。

併せて、DBへの直接の接続は設定で定義することができるが踏み台サーバーからDBへの接続する際には別途実装が必要である。

 

という訳で困ったところとしては下記の2つ。

1.Migration定義ファイルはjsで生成される。(TypeScriptは対応していない

2.踏み台サーバーからDBに接続してMigrationは対応していない。

下記を参考に進めていったので、ぜひ

Getting Started with Sequelize Migrations using Nodejs and Typescript

sequelize with tunnel-ssh

 

1.tscでtsファイルをトランスパイルしてdist配下のMigration用ディレクトリに保存する

2.ssh2を使ってポートフォワードをした後にUzmugでMigrationを実行する

ディレクトリ構造

root/

┣package.json

┣database/

   ┣tsconfig.json

   ┣config/

      ┣doMigration.ts

      ┣settings.ts

   ┣migrations/

        ┣20200726100026-create-hello.ts

   ┣dist/

      ┣migrations/

          ┣20200726100026-create-hello.js

1.トランスパイル用のフォルダ準備と設定

Migration用ファイル

tsconfig.json

script定義も書いておく。

2.ssh2、UzmugでMigrationを実行する

Uzmugを利用することでスクリプトからSequelizeのMigrationを実行することができる。

ポートフォワードする必要があるので、接続可能な状態にした後にUmzugからMigrationを実行する。

実行スクリプト

接続設定ファイル

あとは、コマンドで実行!

npm run migration:up

感想

色々定義する必要があるけれど、TypeScriptで書けるのはやっぱり嬉しい。

DBのバージョン管理ができるのはやっぱり嬉しいので職場でも流行らせたいなぁ。

async awaitのメソッドはもうちょっと良くなりそう。

 

 

シェアする

  • このエントリーをはてなブックマークに追加

フォローする