Closed nghuyenthevinh2000 closed 7 months ago
Ở phần code của ông. Các file sau là tương đồng nhau:
repository là một thành phần trong application layer cho nên nó sẽ phải nằm trong folder application. /repository/repository-factory.ts là một factory để đảm bảo chỉ có thể truy cập vào duy nhất một instance của repository.
phần /entity thuộc về thông tin contact_form. Do database phải chấp nhận được nhiều kiểu cấu trúc hơn nữa. Ta sẽ không làm Database tổng quát nữa mà tạo ra một repository cho Entity contact_form. Một cấu trúc mới cho contact_form sẽ được tạo ra.
phần /lib thuộc về Application Adapter. Các File trong đây sẽ được di chuyển về /application/adapter
phần /prisma thuộc về Infrastructure layer. Các File trong đây sẽ được di chuyển về /infrastructure/prisma
Định nghĩa repository theo chuẩn của DDD (trích từ sách DDD Quickly ) là:
Repository được sử dụng để có được một object reference. Repository là một trong 3 thành phần quản lý life cycle của một Object:
Ở trong phần này sẽ giải thích rõ về DDD Repository.
Câu chuyện sẽ là như sau: Trong database của ta chứa dữ liệu về một Object. Có 3 chương trình code khác nhau muốn sử dụng Object này, nếu như mỗi chương trình viết code riêng để lấy Object trực tiếp từ Database thì sẽ tạo ra 3 instance khác nhau liên kết tới Object. Và nếu có n chương trình code khác nhau thì sẽ tạo ra n instance khác nhau liên kết tới Object.
Nếu như cấu trúc của Object thay đổi, ta sẽ phải thay đổi code của n chương trình để phù hợp với cấu trúc Object mới.
Do đó, Repository ra đời để quản lý liên kết tới Object. Ý tưởng là chỉ có một mình Repository đại diện cho n chương trình được phép add, find, remove, update, change, ... Object.