Part 3.1 — Membuat RESTFul API menggunakan Yii2 (basic template) sebagai backend dan React JS sebagai frontend — FullStackOverflow Developer.
Fokus: Membuat use case aplikasi, skema database , migration dan seed pada database (Backend — Yii2 )
Github Repo: https://github.com/ahmadfadlydziljalal/yii2-reactjs
Melanjutkan dari artikel sebelumnya: https://ahmadfadlydziljalal.medium.com/membuat-restful-api-menggunakan-yii2-basic-template-sebagai-backend-dan-react-js-sebagai-8c43a2c1c9f
Oke, Kita lanjutkan aplikasi ini. Disela-sela kesibukan Saya, menangani beberapa perusahaan, ada rasa tanggung jawab untuk menyelesaikan artikel ini. Anehnya, aplikasi ini adalah salah satu fitur pada aplikasi di salah satu perusahaan tempat Saya bekerja.
Membuat use case.
Aplikasi ini dibuat layaknya sebuah note (catatan) untuk pengingat diri sendiri mengenai suatu rutinitas, peristiwa atau bahkan diary diri sendiri.
User yang menggunakan aplikasi ini bisa membagikan catatan miliknya kepada user lain yang sudah terdaftar di aplikasi. Jika digunakan sebagai reminder, backend akan membuat notifikasi via email melalui waktu tertentu yang di setup oleh user sendiri saat membuat note. (Setiap pagi, atau jam tertentu selama reminder belum finish)
Jika catatan hanya bersifat diary atau curhatan, user memilih status finish pada saat pembuatan, supaya backend akan mengabaikannya.
Membuat Skema Database
Skema akan terdiri dari beberapa tabel, yaitu:
- user, (kita akan menggunakan migration user bawaan Yii2)
- note_label. (berisi record yang akan mencitrakan sifat pada note, apakah bersifat Note (seperti catatan biasa), Reminder, atau ToDo.
- note, (berisi data master note),
- note_detail (berisi data detail dari master note)
- note_share_user (berisi junction_record antara note dengan user)
Memahami Relasi Antar Table
Karena yang kita gunakan adalah RDBMS, perlu Kita mengetahui relasi antar tabel. Hal ini akan sangat membantu untuk kita membuat aplikasi sesuai dengan yang diinginkan.
- Satu record pada table `note` bisa berelasi dengan banyak record pada table `note_detail` (1:M)
- Satu record pada table `note` hanya bisa memiliki satu referensi dari record `note_label` (M:1), Interpretasi mudahnya, dengan kata lain, satu record pada tabel `note_label` bisa menjadi referensi pada record-record di tabel `note` (1:N).
- Satu record note bisa dishare ke banyak user, sehingga satu user bisa memiliki banyak share_note. Membingungkan ? Karena relasi ini bersifat (M:M).
- Untuk itu, saya cenderung menghindari (M:M), maka hubungan antara `table_note` dengan `table_user` akan kita buat sebuah junction table bernama `note_share_user`
Membuat Migration di Backend — Yii2
Oke, Kita akan melakukan migration untuk memanage tabel-tabel kita didatabase yii2reactjs yang sudah kita buat sebelumnya.
Tabel User
Sebenarnya ini agak canggung, kenapa ? , Kita tidak perlu capek-capek mengdefinisikan tabel user kita. Ada banyak library Yii2 yang menghandle user management RBAC, which is pasti menggunakan table user. `` Dont reinvinted the wheel``. Sekalian saja dah saya share disini.
Kita tidak buat migration, tapi kita malah akan menggunakan migration milik Yii2. Coba masuk ke folder backend\vendor\yii2\rbac\migrations.
Disitu kita lihat bagaimana Yii2 mendefinisikan tabel-tabel yang diguanakan dalam RBAC
Jangan lupa lakukan setting authManager di `bakcend/config/console.php` dan `backend/config/web.php` . Lalu jalankan perintah pada direktori backend.
yii migrate — migrationPath=@yii/rbac/migrations
Ketik yes: maka hasilnya akan sebagai berikut.
Coba deh lihat ke database yii2react kita,
Bersambung pada artikel 3.2: