Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
# فاز ۱ — موجودیتهای بکند CMS ✅ تکمیل شد
|
||||
|
||||
> **تاریخ تکمیل:** ۱۴۰۴/۰۴/۲۱ (2026-02-11)
|
||||
> **وضعیت:** ✅ تکمیل — بیلد موفق + Migration ساخته شد
|
||||
|
||||
---
|
||||
|
||||
## خلاصه کارهای انجام شده
|
||||
|
||||
### 1.1 موجودیتهای دامین (8 فایل)
|
||||
|
||||
| فایل | مسیر | توضیح |
|
||||
|------|------|-------|
|
||||
| `BlogPostStatus.cs` | `Domain/Enums/` | enum: Draft=0, Published=1, Scheduled=2, Archived=3 |
|
||||
| `BlogPost.cs` | `Domain/Entities/Blog/` | پست بلاگ — عنوان، اسلاگ، خلاصه، محتوای HTML، تصویر، وضعیت، شمارنده بازدید |
|
||||
| `BlogCategory.cs` | `Domain/Entities/Blog/` | دستهبندی بلاگ — عنوان، اسلاگ، آیکون، ترتیب |
|
||||
| `BlogPostCategory.cs` | `Domain/Entities/Blog/` | جدول واسط پست-دستهبندی (Many-to-Many) |
|
||||
| `BlogPostTag.cs` | `Domain/Entities/Blog/` | جدول واسط پست-تگ (از Tag موجود استفاده شد) |
|
||||
| `BlogPostImage.cs` | `Domain/Entities/Blog/` | گالری تصاویر پست — مسیر، عنوان جایگزین، ترتیب |
|
||||
| `SitePage.cs` | `Domain/Entities/Content/` | صفحات سایت (درباره ما، تماس با ما) — با کلید یکتا |
|
||||
| `SitePageSection.cs` | `Domain/Entities/Content/` | بخشهای هر صفحه — محتوای HTML، آیکون، تصویر، داده اضافی JSON |
|
||||
|
||||
### 1.2 تنظیمات Entity Framework (7 فایل)
|
||||
|
||||
| فایل | مسیر | ایندکسها |
|
||||
|------|------|----------|
|
||||
| `BlogPostConfiguration.cs` | `Configurations/Blog/` | Slug (unique), Status, PublishedAt, IsFeatured, AuthorUserId, Status+PublishedAt |
|
||||
| `BlogCategoryConfiguration.cs` | `Configurations/Blog/` | Slug (unique), IsActive |
|
||||
| `BlogPostCategoryConfiguration.cs` | `Configurations/Blog/` | FK: BlogPostId + BlogCategoryId |
|
||||
| `BlogPostTagConfiguration.cs` | `Configurations/Blog/` | FK: BlogPostId + TagId |
|
||||
| `BlogPostImageConfiguration.cs` | `Configurations/Blog/` | FK: BlogPostId |
|
||||
| `SitePageConfiguration.cs` | `Configurations/Content/` | PageKey (unique) |
|
||||
| `SitePageSectionConfiguration.cs` | `Configurations/Content/` | SitePageId + SectionKey (compound) |
|
||||
|
||||
### 1.3 DbContext (2 فایل ویرایش شده)
|
||||
|
||||
- `IApplicationDbContext.cs` — افزودن 7 DbSet
|
||||
- `ApplicationDbContext.cs` — افزودن 7 DbSet property
|
||||
|
||||
### 1.4 تعاریف Proto (4 فایل + csproj)
|
||||
|
||||
| فایل | RPCها | csharp_namespace |
|
||||
|------|-------|-----------------|
|
||||
| `blogpost.proto` | 11 RPC (CRUD + Publish/Archive/ViewCount + BySlug + Published/Featured) | `BlogPost` |
|
||||
| `blogcategory.proto` | 6 RPC (CRUD + GetAll + GetActive) | `BlogCategory` |
|
||||
| `blogpostimage.proto` | 4 RPC (Add/Delete/Get/Reorder) | `BlogPostImage` |
|
||||
| `sitepage.proto` | 8 RPC (Get/GetByKey/Update/GetAll + Section CRUD + Reorder) | `SitePage` |
|
||||
|
||||
### 1.5 لایه CQRS Application (≈50 فایل)
|
||||
|
||||
#### BlogPost Commands (6 گروه، 14 فایل)
|
||||
- `CreateBlogPost` — Command + Handler + Validator (با اعتبارسنجی اسلاگ regex)
|
||||
- `UpdateBlogPost` — Command + Handler + Validator (الگوی delete-recreate برای دستهبندی/تگ)
|
||||
- `DeleteBlogPost` — Command + Handler (soft-delete)
|
||||
- `PublishBlogPost` — Command + Result + Handler (تنظیم Status و PublishedAt)
|
||||
- `ArchiveBlogPost` — Command + Result + Handler
|
||||
- `IncrementViewCount` — Command + Handler
|
||||
|
||||
#### BlogPost Queries (5 گروه، 10 فایل)
|
||||
- `GetBlogPost` — Query + DTO + Handler (با Include chain)
|
||||
- `GetBlogPostBySlug` — Query + Handler (بازاستفاده از BlogPostDto)
|
||||
- `GetAllBlogPosts` — Query + ResponseDto + Handler (فیلتر + مرتبسازی + صفحهبندی)
|
||||
- `GetPublishedBlogPosts` — Query + Handler (مشتریمحور، فقط Published)
|
||||
- `GetFeaturedBlogPosts` — Query + Handler (برای لندینگ پیج)
|
||||
|
||||
#### BlogCategory CQRS (11 فایل)
|
||||
- Commands: Create + Update + Delete (با Validator)
|
||||
- Queries: GetBlogCategory + GetAllBlogCategories + GetActiveBlogCategories
|
||||
|
||||
#### BlogPostImage CQRS (8 فایل)
|
||||
- Commands: Add + Delete + Reorder (با ImageSortItem)
|
||||
- Queries: GetBlogPostImages
|
||||
|
||||
#### SitePage CQRS (14 فایل)
|
||||
- Commands: UpdateSitePage + CreateSection + UpdateSection + DeleteSection + ReorderSections
|
||||
- Queries: GetSitePage + GetSitePageByKey + GetAllSitePages
|
||||
|
||||
### 1.6 سرویسهای gRPC WebApi (4 فایل)
|
||||
|
||||
| سرویس | الگو | توضیح |
|
||||
|-------|------|-------|
|
||||
| `BlogPostService.cs` | ترکیبی (دستی + dispatcher) | مپینگ دستی برای لیستها و RepeatedField |
|
||||
| `BlogCategoryService.cs` | ترکیبی | dispatcher برای CRUD ساده، دستی برای لیستها |
|
||||
| `BlogPostImageService.cs` | ترکیبی | dispatcher + مپینگ دستی Reorder |
|
||||
| `SitePageService.cs` | ترکیبی | dispatcher + مپینگ دستی Sections |
|
||||
|
||||
### 1.7 Mapping Profiles (2 فایل)
|
||||
|
||||
- `BlogPostProfile.cs` — مپینگ PublishBlogPostResult و ArchiveBlogPostResult
|
||||
- `BlogCategoryProfile.cs` — مپینگ long → CreateBlogCategoryResponse
|
||||
|
||||
### 1.8 EF Migration
|
||||
|
||||
- `20260210232742_AddBlogAndContentEntities.cs` — ایجاد 7 جدول جدید
|
||||
- **Build:** ✅ موفق (0 Error, warnings مربوط به کد قدیمی)
|
||||
|
||||
---
|
||||
|
||||
## آمار فاز ۱
|
||||
|
||||
| متریک | تعداد |
|
||||
|-------|-------|
|
||||
| فایلهای جدید | ~65 |
|
||||
| فایلهای ویرایش شده | ~4 |
|
||||
| موجودیتهای دامین | 7 (+1 enum) |
|
||||
| تنظیمات EF | 7 |
|
||||
| تعاریف Proto | 4 |
|
||||
| RPCهای gRPC | 29 |
|
||||
| Commands CQRS | 16 |
|
||||
| Queries CQRS | 12 |
|
||||
| سرویسهای WebApi | 4 |
|
||||
| جداول دیتابیس جدید | 7 |
|
||||
|
||||
---
|
||||
|
||||
## فاز بعدی
|
||||
|
||||
**فاز ۲ — پنل مدیریت بلاگ (BackOffice)** — صفحات Blazor WASM برای مدیریت پستها، دستهبندیها، تصاویر و صفحات سایت.
|
||||
Reference in New Issue
Block a user