Artikel ini menjelaskan logika di balik fitur sinkronisasi data untuk memastikan integritas data tetap terjaga, mencegah duplikasi, dan menangani konflik data antara cloud dan local.
Sebelum satu baris data pun diubah, sistem membuat salinan penuh database lokal.
/database/renja_rt.db.backup_before_rt_sync_[TIMESTAMP]Semua operasi database dibungkus dalam satu Transaction.
Kami menggunakan dua pendekatan berbeda tergantung jenis tabel:
rt_proposals)Digunakan untuk data yang mungkin berubah isinya (edit).
updated_at. Data lokal hanya ditimpa jika versi cloud lebih baru.submissions & beneficiaries)Digunakan untuk data transaksional yang terus bertambah.
MAX(id) di database lokal.Script secara ketat memvalidasi Foreign Keys sebelum insert:
rt_proposals memvalidasi keberadaan rt_user_id.submissions memvalidasi keberadaan user_id.beneficiaries memvalidasi keberadaan submission_id.