Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/henoc/book-management
https://github.com/henoc/book-management
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/henoc/book-management
- Owner: henoc
- Created: 2024-08-09T15:59:39.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-08-11T06:02:16.000Z (5 months ago)
- Last Synced: 2024-08-11T09:48:00.664Z (5 months ago)
- Language: Kotlin
- Size: 80.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 書籍管理システム
## 概要
※このプロジェクトはコーディング課題の一環として作成されました。
Kotlin、Spring Boot、jOOQを使用して実装された書籍管理システムです。図書館システムにおける書籍と著者を管理するためのRESTful APIを提供します。
## 機能
- 書籍と著者のCRUD操作
- 著者別の書籍取得
- 入力バリデーション
- エラーハンドリング
- Flywayを使用したデータベースマイグレーション
- TestContainersを使用した統合テスト## 使用技術
- Kotlin
- Spring Boot
- jOOQ
- PostgreSQL
- データベースマイグレーション用のFlyway
- テスト用のJUnit 5
- 統合テスト用のTestContainers## プロジェクト構造
```
src
├── main
│ ├── kotlin
│ │ └── com
│ │ └── example
│ │ └── bookmanagement
│ │ ├── controller
│ │ ├── entity
│ │ ├── exception
│ │ ├── repository
│ │ │ └── impl
│ │ └── service
│ └── resources
│ └── db
│ └── migration
└── test
├── kotlin
│ └── com
│ └── example
│ └── bookmanagement
│ ├── controller
│ ├── repository
│ └── service
└── resources
```## セットアップと実行
### 前提条件
- JDK 21
- Docker(PostgreSQL実行用)
- Gradle### 手順
1. リポジトリをクローンする:
```shell
git clone <リポジトリURL>
cd book-management
```2. Docker Composeを使用してPostgreSQLデータベースを起動する:
```shell
docker-compose up -d
```3. アプリケーションを実行する:
```shell
./gradlew bootRun
```アプリケーションは `http://localhost:8080` で起動します。
## APIエンドポイント
### 著者
- GET `/api/authors` - 全著者を取得
- GET `/api/authors/{id}` - IDで著者を取得
- POST `/api/authors` - 新しい著者を作成
- PUT `/api/authors/{id}` - 著者を更新### 書籍
- GET `/api/books` - 全書籍を取得
- GET `/api/books/{id}` - IDで書籍を取得
- GET `/api/books/author/{authorId}` - 著者IDで書籍を取得
- POST `/api/books` - 新しい書籍を作成
- PUT `/api/books/{id}` - 書籍を更新## テスト
テストを実行するには、次のコマンドを使用します:
```shell
./gradlew test
```## データベースマイグレーション
データベースマイグレーションはFlywayで管理されています。マイグレーションスクリプトは `src/main/resources/db/migration` にあります。
マイグレーションを手動で実行するには:
```shell
./gradlew flywayMigrate
```