Outline

  • Chương 0: Giới thiệu DDD ?
  • Chương 1: Thực hành Xây dựng một ứng dụng đăng nhập cơ bản
    • 1.1 Cài đặt môi trường, các thư viện cần thiết
    • 1.2 Viết API regiter/login/logout
    • 1.3 Viết middleware
    • 1.4

References:

Chương 0: Giới thiệu DDD?

Gồm 4 lớp chính:

  • Presentation: Chứa các UI, API, giao diện người dùng. Lớp này phụ thuộc vào Application layer.

  • Application: Chứa các business logic. Lớp này phụ thuộc vào Domain layer.

  • Domain: Chứa các domain model. Đây là trung tâm của hệ thống, chứa các thực thể, trạng thái, logic nghiệp vụ.

  • Infrastructure: Chứa các technical detail như database, messaging, caching, ... Lớp này phụ thuộc vào Domain layer. DDD

  • Cách sử dụng DDD

app layer và ifras sử ụng domain, presentation sẽ giao tiếp với app layer

Chương 1: Thực hành Xây dựng một ứng dụng đăng nhập cơ bản

1.1 Cài đặt môi trường, các thư viện cần thiết

  • Sử dụng các thư viện sau
[dependencies]
serde = { version = "1.0.204", features = ["derive"] }
async-trait = "0.1.81"
diesel = { version = "2.2.1", features = ["postgres", "r2d2"] }
dotenv = "0.15.0"
r2d2 = "0.8.10"
actix-web = "4.8.0"
log = "0.4.22"
env_logger = "0.11.3"
  • Create a file .env
DATABASE_URL=postgres://rustddd:rustddd2024@45.119.83.244:6432/rust_ddd
  • Cài đặt diesel command line
cargo binstall diesel_cli 
cargo install diesel_cli

May be we get an error and need to install

Compiling unicode-normalization v0.1.23
error: failed to run custom build command for `mysqlclient-sys v0.4.0`

Caused by:
  process didn't exit successfully: `/tmp/cargo-installyi3JQ9/release/build/mysqlclient-sys-8ed54e8ffd0676e2/build-script-build` (exit status: 101)

>> 
sudo apt-get install libmysqlclient-dev
cargo install diesel_cli --no-default-features --features postgres

Tham khảo link