ddd-in-rustは、DDDの実装パターンをRustで表現すること試みたリポジトリです。
DDDの実装パターンは、「ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本」(著: 成瀬 允宣氏)という書籍のサンプルコードをベースにRustで書いています。(一部、書籍には出ていないパターンも試しています)
DDDの実装パターンをRustのコードで表現しています。 ディレクトリとしては、「ドメイン駆動設計入門」のチャプター単位で分けています。 各ディレクトリは独立したcrateになっていて、個別にコンパイル可能です。
- Entity
- Value Object
- Domain Service
- Application Service
- Factory
- Dependency Injection
- Cake pattern
- Repository
- Aggregate
- Specification
chapter08_sample_application
でWebAPIサーバを実装しています。
rusのエコシステムcargo
を導入していればすぐに起動することができます。
$ cargo run --bin mock_server
$ curl -X PUT -H 'Content-Type:application/json' -D - localhost:8080/users/ -d '{"name": "kuwana-kb", "mail_address": "kuwana-kb@hoge.com"}'
HTTP/1.1 200 OK
content-type: text/plain; charset=utf-8
content-length: 7
date: Sun, 08 Mar 2020 16:28:48 GMT
success
$ curl -X GET -H 'Content-Type:application/json' -D - localhost:8080/users/ -d '"kuwana-kb"'
HTTP/1.1 200 OK
content-type: application/json
content-length: 54
date: Sun, 08 Mar 2020 16:29:01 GMT
{"id":"01E2XFMGYRG35405W523R0PYYZ","name":"kuwana-kb"}