# پایگاه داده — تسک ۰۶: ماژول کلینیک

## جدول: clinics
_(entity_type=clinic_pro, bundle=clinic — از config تأیید شده)_

| ستون | نوع | نام Drupal | توضیح |
|------|-----|-----------|-------|
| id | INT UNSIGNED AUTO_INCREMENT PK | id | |
| uuid | CHAR(36) UNIQUE NOT NULL | uuid | |
| user_id | INT FK → users.id NOT NULL | uid | مالک کلینیک |
| name | VARCHAR(255) NULL | field_name | نام کلینیک |
| info | LONGTEXT NULL | field_info | توضیحات (نه description!) |
| address | LONGTEXT NULL | field_address | آدرس |
| telephone | VARCHAR(50) NULL | field_telephone | تلفن (نه phone!) |
| is_24_7 | TINYINT(1) DEFAULT 0 | field_24_7 | باز ۲۴/۷ |
| working_days | VARCHAR(255) NULL | field_working_days | روزهای کاری (متن آزاد، مثال: 'شنبه تا سه شنبه ساعت ۱۲:۲۰') |
| latitude | FLOAT NULL | field_latitude | |
| longitude | FLOAT NULL | field_longitude | |
| logo_id | INT FK → files.id NULL | field_clinic_logo | لوگو کلینیک (image, cardinality=1) |
| city_id | INT FK → categories.id NULL | field_city | شهر (entity ref → category/city) |
| state_id | INT FK → categories.id NULL | field_state | استان (entity ref → category/state) |
| representation_id | INT FK → representations.id NULL | field_agent | نماینده کلینیک (entity ref → user — در Drupal به user اشاره دارد، در Symfony به representation) |
| created_at | INT NOT NULL | created | Unix timestamp |
| updated_at | INT NOT NULL | changed | Unix timestamp |

## جدول: clinic_doctors (ManyToMany)
| ستون | نوع | نام Drupal | توضیح |
|------|-----|-----------|-------|
| clinic_id | INT FK → clinics.id CASCADE | | |
| doctor_id | INT FK → doctors.id CASCADE | field_doctors | cardinality نامحدود |

## جدول: clinic_specialties (ManyToMany)
| ستون | نوع | توضیح |
|------|-----|-------|
| clinic_id | INT FK → clinics.id CASCADE | |
| category_id | INT FK → categories.id | field_clinic_specialty |

## جدول: clinic_services (ManyToMany)
| ستون | نوع | توضیح |
|------|-----|-------|
| clinic_id | INT FK → clinics.id CASCADE | |
| category_id | INT FK → categories.id | field_doctor_services |

## جدول: clinic_insurances (ManyToMany)
| ستون | نوع | توضیح |
|------|-----|-------|
| clinic_id | INT FK → clinics.id CASCADE | |
| category_id | INT FK → categories.id | field_insurance (insurance_type یا supplementary_insurance bundle) |

## جدول: clinic_images (تصاویر اضافی)
| ستون | نوع | نام Drupal | توضیح |
|------|-----|-----------|-------|
| id | INT AUTO_INCREMENT PK | | |
| clinic_id | INT FK → clinics.id CASCADE | | |
| file_id | INT FK → files.id | field_image_clinic | حداکثر ۵ تصویر (cardinality=5) |
| sort_order | INT DEFAULT 0 | delta | ترتیب |

## ایندکس‌ها
```sql
CREATE INDEX idx_clinics_owner ON clinics(user_id);
CREATE INDEX idx_clinics_city ON clinics(city_id);
CREATE INDEX idx_clinics_state ON clinics(state_id);
CREATE INDEX idx_clinics_representation ON clinics(representation_id);
```

## نکات مهم
- `field_agent` در Drupal به user اشاره دارد (cardinality=-1 نامحدود) — در Symfony ساده‌تر شده و فقط یک representation دارد
- `field_working_days` متن آزاد است، مثل 'شنبه تا سه‌شنبه ۸ تا ۱۲'، نه فرمت ساختاریافته
- `field_telephone` نه `phone` — اسم فیلد از Drupal config گرفته شده
