Fix: feeds database gabungan#1618
Open
pandigresik wants to merge 9 commits into
Open
Conversation
Contributor
|
🔄 AI PR Review sedang antri di server...
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request: Fix berita desa tidak tampil jika menggunakan database gabungan
Deskripsi
Memperbaiki bug halaman Berita Desa yang kosong saat menggunakan mode database gabungan. Masalah terjadi karena logika fetching RSS feeds masih menggunakan query Eloquent langsung ke tabel
data_desalokal, sehingga tidak mendapat data desa ketika mode database gabungan aktif (data berasal dari API). Solusi: memindahkan logika feeds keDesaServiceyang sudah mendukung kedua mode (lokal & API) melalui methodlistDesa(), plus penambahan caching, error handling yang lebih baik, dan unit test.Perubahan yang dilakukan:
getFeeds()dariPageControllerkeDesaServiceagar bisa memanfaatkanlistDesa()yang mendukung database gabungan.getFeeds(): MenambahkanCache::remember('desa_feeds', 3600, ...)untuk mengurangi pemanggilan RSS feed berulang.Carbon::parse($item->get_date('U'))denganCarbon::createFromTimestamp((int) $item->get_date('U'))untuk menghindari salah interpretasi string numerik sebagai format tanggalYmdHis.desa.blade.php: Restrukturasi layout.page-headermenggunakan Bootstrap grid, memindahkan CSS inline ke filedesa.css, mengganti query langsungDataDesa::orderBy('desa_id')->get()dengan include partialselect-desa.filterFeeds(): MenggantiDataDesa::orderBy('desa_id')->get()dengan(new DesaService())->listDesa()untuk konsistensi.listPathDesa(): Memperbaiki valuepathdi factory dan assertion untuk tipe data JSON column.Alasan perubahan:
getFeeds()di controller menggunakanDataDesa::websiteUrl()->get()yang hanya membaca tabel lokal. Saat database gabungan aktif, data desa tidak ada di tabel lokal → feeds kosong.DesaService::listDesa()sudah menangani kedua mode (lokal via Eloquent, gabungan via API). Memindahkan logika feeds ke service layer menghilangkan duplikasi.Dampak perubahan:
✅ Berita Desa tampil di mode database gabungan: Bug fix utama — feeds sekarang diambil via
listDesa()yang mendukung API✅ Performance meningkat: Caching 1 jam untuk feeds + caching 24 jam untuk list desa
✅ Error handling lebih baik: Feed item gagal tidak merusak seluruh halaman; error tercatat di log
✅ Code lebih maintainable: Logika feeds terpusat di service layer dengan test coverage
✅ UI lebih konsisten: Layout blade menggunakan Bootstrap grid yang rapi dengan CSS terpisah
Masalah Terkait (Related Issue)
Langkah untuk mereproduksi (Steps to Reproduce)
Sebelum perbaikan (masalah):
sinkronisasi_database_gabungan = 1)Setelah perbaikan (fix):
sinkronisasi_database_gabungan = 1)Testing pada fitur lain yang terkait:
DesaService::listDesa())Daftar Periksa (Checklist)
Teknis Detail
Penjelasan Teknis
Flow sebelum perbaikan (controller):
Flow setelah perbaikan (service):
Perbaikan parsing timestamp:
Konfigurasi yang berubah
Dependencies yang ditambahkan
Testing
Manual Testing
Breaking Changes
Tidak ada. Method
getFeeds()diPageControllermasih ada (sebagai wrapper delegasi keDesaService) untuk menjaga backward compatibility, meskipun implementasi lama sudah tidak digunakan.Migration Guide
Tidak diperlukan.
References
Screenshot