Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Architecture
Backend API Genel Yapı
Pagination
| Parametre | Değer |
|---|---|
per_page | Varsayılan: config’den, Max: 100 |
page | Varsayılan: 1 |
per-page | ✅ Kabul edilir — otomatik per_page’e çevirilir |
Frontend per-page gönderebilir, API kabul eder. Ama yeni kodda per_page tercih et.
Sort Sistemi
Format: sort=field (ASC) veya sort=-field (DESC)
Default: -id (en yenisi önce)
Dikkat: Bazı endpoint’lerde field adı özel:
- School:
school-id(tire ile) → backendschools.id’ye map eder - SchoolContent:
id,title,created_at(underscore/standart)
Include/Relation Sistemi
İki farklı format kabul edilir:
includes[]=creator&includes[]=schools— array (frontendincludes[]gönderir)include=creator,schools— comma-separated
Backend’de HasDynamicIncludes trait ile dinamik yükleme. Base Controller loadIncludes() metodu.
Filter Sistemi
| Pattern | Örnek | Açıklama |
|---|---|---|
| Standart | filter[field]=value | Tek değer |
| Array | filter[school_ids][]=1&filter[school_ids][]=2 | Çoklu değer |
| Nested | filter[date_range][min]=2024-01-01 | Range |
| Trashed | filter[trashed]=with|only | Soft delete |
| Search | filter[search]=query | Global arama |
| Null | nulls[]=field_name | NULL olan kayıtlar |
| Not null | not_nulls[]=field_name | NULL olmayan |
QueryCondition Helpers (Backend)
QueryCondition::equal() // = operatör
QueryCondition::search() // LIKE %value%
QueryCondition::dateRange() // min/max tarih
QueryCondition::textMultiSearch() // Birden fazla alanda arama
QueryCondition::bool() // Boolean casting
QueryCondition::array() // array filter
QueryCondition::trashed() // soft deleteRepository Pattern
BaseRepository kullanılıyor. Her domain için ayrı repository.
Related
- backend-endpoint-referansi — Tüm endpoint ve filter tablosu
- backend-tutarsizliklar — Frontend’in bilmesi gereken farklar