- Add SendSmsMessage class for encapsulating SMS message data. - Create KavehNegarProvider and RanginehProvider classes implementing SmsProviderInterface for sending SMS. - Implement SmsLogRepository and SmsTemplateRepository for managing SMS logs and templates. - Develop SendSmsHandler for handling SMS sending messages. - Create SmsService to manage SMS dispatching and logging. - Add UserProfileController for managing user profiles with CRUD operations. - Implement UserProfile entity and repository for user profile data management. - Update symfony.lock and bootstrap.php for project dependencies and environment setup.
2.3 KiB
2.3 KiB
پایگاه داده — تسک ۰۴: ماژول بلاگ
ساختار واقعی از DB backup
جدول blog در Drupal base fields را دارد + ۳ custom field:
جدول: blogs
(entity_type=blog — از DB backup تأیید شده)
| ستون | نوع | نام Drupal | توضیح |
|---|---|---|---|
| id | INT UNSIGNED AUTO_INCREMENT PK | id | |
| uuid | CHAR(36) UNIQUE NOT NULL | uuid | |
| user_id | INT FK → users.id NOT NULL | uid | نویسنده |
| title | VARCHAR(255) NULL | label | عنوان (base field Drupal) |
| slug | VARCHAR(300) UNIQUE NOT NULL | — | اضافهشده در Symfony (در Drupal نیست!) |
| body | LONGTEXT NULL | description__value | محتوا (HTML) |
| status | TINYINT(1) DEFAULT 0 | status | منتشرشده/پیشنویس |
| is_top | TINYINT(1) DEFAULT 0 | field_top | نمایش در صفحه اول |
| image_id | INT FK → files.id NULL | field_image | تصویر شاخص (entity ref → file) |
| created_at | INT NOT NULL | created | Unix timestamp |
| updated_at | INT NOT NULL | changed | Unix timestamp |
جدول: blog_tags (ManyToMany)
| ستون | نوع | نام Drupal | توضیح |
|---|---|---|---|
| blog_id | INT FK → blogs.id CASCADE | ||
| category_id | INT FK → categories.id CASCADE | field_tag | تگ/دستهبندی (entity ref → category/tag bundle) |
نمونه داده واقعی از DB backup
id=14, label='روش های خانگی محافظت از پوست در تابستان', uid=22, status=1
id=15, 16, ... (22 مطلب)
field_image: target_id=97 (file entity)
ایندکسها
CREATE INDEX idx_blogs_status ON blogs(status);
CREATE INDEX idx_blogs_user ON blogs(user_id);
CREATE INDEX idx_blogs_created ON blogs(created_at DESC);
CREATE INDEX idx_blogs_top ON blogs(is_top);
CREATE UNIQUE INDEX idx_blogs_slug ON blogs(slug);
نکات مهم
slugدر Drupal وجود ندارد — در Symfony باید auto-generate شود ازtitleimageدر Drupal یک entity reference به file/media است — در Symfony مسیر فایل ذخیره میشودbodyدر Drupal با نامdescription__valueذخیره میشود (base field)status=1= منتشرشده،status=0= پیشنویس