Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چی رو میریزی تو SharedModule و همهجا ایمپورتش میکنی، کدهات شدیداً بهم گره میخورن و موقع تست گرفتن از Orders مجبور میشی کل دیتابیس و سرویس ایمیل رو هم بالا بیاری. راه درست اینه که به جای اکسپورت مستقیم ریپازیتوریها، بین بخشها یه قرارداد (Interface + Symbol) بذاری؛ یعنی مثلاً تو Orders فقط بگی:
// OrdersService.ts
constructor(
@Inject('PAYMENTS_PORT') private payments: PaymentsPort
) {}
اینطوری بخش سفارشات کاری نداره پرداخت چطوری تو دیتابیس ذخیره میشه یا چه ایمیلی میفرسته، ماژولها کاملاً مستقل میمونن و دیگه لازم نیست چرخههای وابستگی رو با
forwardRef از بین ببری.https://javascript.plainenglish.io/nestjs-module-boundaries-that-survive-growth-3c6781b2baf1
@codehalics | کدهالیک
