diff --git a/twiq/.gitignore b/twiq/.gitignore new file mode 100644 index 00000000..b83d2226 --- /dev/null +++ b/twiq/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/twiq/Cargo.lock b/twiq/Cargo.lock new file mode 100644 index 00000000..8bc3d060 --- /dev/null +++ b/twiq/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "domain" +version = "0.0.0" diff --git a/twiq/Cargo.toml b/twiq/Cargo.toml new file mode 100644 index 00000000..c66a4d73 --- /dev/null +++ b/twiq/Cargo.toml @@ -0,0 +1,2 @@ +[workspace] +members = ["crates/*"] diff --git a/twiq/crates/domain/Cargo.toml b/twiq/crates/domain/Cargo.toml new file mode 100644 index 00000000..ef157592 --- /dev/null +++ b/twiq/crates/domain/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "domain" +version = "0.0.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/twiq/crates/domain/README.md b/twiq/crates/domain/README.md new file mode 100644 index 00000000..c69e3e55 --- /dev/null +++ b/twiq/crates/domain/README.md @@ -0,0 +1,61 @@ +# domain + +## メモ + +- Twitter にリクエストを投げてレスポンスを保存する +- レスポンスから何を得ておくべきか +- リツイートの扱いをどうすべきか +- 画像の扱いをどうすべきか + +```rust +// application layer +let created = request_repository.find_created(); +let started = created.start(); +request_repository.store(started); + +let response = service.send_request(started); + +let finished = started.finish(response); +request_repository.store(finished); +``` + +```mermaid +classDiagram + class Created { + at : Instant + start() Started + } + + class Started { + created : Created + at : Instant + from(Created)$ Started + finish(Response) Finished + } + + class Finished { + started : Started + response : Response + at : Instant + from(Started)$ Finished + } +``` + +```mermaid +stateDiagram-v2 + [*] --> created + created --> started + started --> finished + finished --> [*] +``` + +## モジュール構造 + +- aggregate ... 集約 + - attr ... 属性 + - entity ... エンティティ + - error ... エラー + - event ... イベント + - value ... 値 +- event ... イベント +- value ... (集約をまたぐ) 値 diff --git a/twiq/crates/domain/src/lib.rs b/twiq/crates/domain/src/lib.rs new file mode 100644 index 00000000..1b4a90c9 --- /dev/null +++ b/twiq/crates/domain/src/lib.rs @@ -0,0 +1,8 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + let result = 2 + 2; + assert_eq!(result, 4); + } +}