bpeldi2oerkd8の開発日誌

とある大学院生の成長の記録。

Web開発の勉強12- 自作サービス作り5

今回の記事もWeb開発の勉強の記事です。
前回の記事では、GitHubアカウントでログインして予定の作成・削除・編集と出欠登録ができるシステムを完成させました。
developer-bpeldi2oerkd8.hatenablog.com

とはいっても前回までの内容はN予備校の教材の内容に近かったため、オリジナルの機能である「Slackのbotを使って出欠登録をする」ことを目指したいと思います。

準備

どのように機能を実現するかを考えます。
本体の出欠登録システムであるlattendance (1)と、slackのbotとしてのlattendance-bot (2)の2つを用意しています。
アプローチとしては、次の2つを思いつきました。

  • 2つのシステムでデータベースを共有し、(2)で直接データベース内の出欠情報を更新する。
  • (2)から(1)の出欠更新APIを叩き、出欠情報を更新する。(データベースは(1)に存在する。)

今後、botをSlack以外にも拡張するかもしれないことを考えると、外部からAPIを叩けばよいだけの2つ目を採用することにしました。

出欠更新APIの実装

早速実装に移ります。
今回は、APIにアクセス制限はつけず、まずは正しく動作するAPIを実装することに重きを置きます。

routesディレクトリ下にv1というディレクトリを作り、そこにAPIに関するファイルを入れることにします。
APIのURLは /api/v1/schedules/:roomId/users/:slackId/dates/:dateString としました。
dateStringのフォーマットは、YYYY-MM-DDとします。

完成したものがこちらです。
github.com

Promiseやasync/awaitを使い、実装しました。
日付の先頭が0のとき、うまく動かなかったため修正しました。

Jestを使ってテストコードも書きました。
テストもしっかり通り、今のところは問題ないようです。
github.com
f:id:bpeldi2oerkd8:20210609001313p:plain


今回はここで終わります。
次回はbotの実装と、それに伴うデータベースの変更に取り組みます。