Skip to content

m-takehara/server-side-kotlin-lounge-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

server-side-kotlin-lounge-template

Server-Side Kotlin Lounge #2「JavaからKotlinへの移行を考える」 - connpass で使用するテンプレのリポジトリです。

前提条件

下記をインストールしてください。

目標

以下のサンプルのドメインを実装してみます。

  • Qiita、Zenn、はてブなど、記事を投稿できるさまざまなサービスのユーザを一括で管理するためのシステムを作ります
  • 以下のような手順で利用できる Web API として作ります
    1. POST /users : ユーザを作ります
    2. PUT /users/{userId} : ユーザに Qiita アカウントなどを紐付けます
    3. GET /articles?userId={userId} : ユーザに紐付いてる全アカウントの全記事を取得します

IntelliJ IDEA に Gauge プラグインを入れた上で、e2e/specs/users.spec を見ていただくと、上記仕様に関する具体的な情報を得られるかもしれません。

アプリ構築

以下のライブラリ / フレームワーク / ソフトウェアを使って Web API を構築します。

  • Ktor: Web フレームワーク
  • Koin: DI フレームワーク
  • Fuel: HTTP 通信用ライブラリ
  • Exposed: O/R Mapper

また、テスト用に以下を使用します。

  • Kotest: 単体テスト用フレームワーク
  • mockk: 単体テスト用のモッキングライブラリ
  • Gauge: 自動テスト作成用のフレームワーク、E2E テストの作成に使用

アプリの起動など

データベースの起動

cd database
docker compose up -d

# 停止
docker compose down -v --rmi all

server の起動

exec-maven-plugin の導入をサボったので、IntelliJ IDEA から server/src/main/kotlin/me/takehara/rest/Application.ktmain を実行してください。

E2E テストの実行

gauge-maven-plugin により Gauge のテストを全実行できます。

cd e2e
mvn clean test

# unimplemented (アプリが未実装のテスト) を除外する場合
mvn clean test -Dtags='!unimplemented'

About

Server side kotlin #2 ライブコーディング用テンプレート

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published