Automatic Data Seeding/ Migrations
Halo sobat AdHub! Kali ini kita akan membahas mengenai data seeding dan migrations secara umum dan di Django.
Data Seeding
Data seeding merupakan kegiatan mengisi database dengan sebuah data awal. Data seeding sangat bermanfaat ketika kita ingin mengimplementasikan sebuah fitur yang berhubungan dengan database namun kita belum memiliki data pada database. Data seeding biasanya dilakuakan secara atomatis ketika initial setup aplikasi. Data yang digunakan dapat berupa dummy data atau data sesungguhnya seperti initial admin akun.
Implementasi Data Seeding
Misalkan kita ingin mengambil data pengguna yang terdapat pada AdHub maka kita dapat menjalankan command
pyhon manage.py dumpdata iklan > iklan.json
Akan menghasilkan file iklan.json yang bersisi
[{"model": "iklan.iklan", "pk": 1, "fields": {"judul": "iklsn", "platform": 1, "tanggal_mulai": "2019-04-30T06:36:00Z", "tanggal_berakhir": "2019-04-30T06:36:02Z", "deskripsi": "lalalalala", "image": "static/saved_image/Screenshot_from_2019-04-13_21-26-25.png", "link_iklan": "http://a.com", "pemasang_iklan": 1, "nama_usaha": "usaha", "campaign_id": "836243012721", "ad_group_id": "928391246821", "google_ad_id": "123746128461"}}, {"model": "iklan.iklan", "pk": 2, "fields": {"judul": "ad", "platform": 1, "tanggal_mulai": "2019-04-30T06:36:49Z", "tanggal_berakhir": "2019-04-30T06:36:51Z", "deskripsi": "iklan", "image": "static/saved_image/Screenshot_from_2019-04-12_14-25-13.png", "link_iklan": "http://b.com", "pemasang_iklan": 1, "nama_usaha": "nama", "campaign_id": "9328498724", "ad_group_id": "9324823741", "google_ad_id": "9021814217"}}, {"model": "iklan.pembayaran", "pk": 1, "fields": {"status": "Lunas", "total": 4000000, "pemasang_iklan": 1, "bank_pengirim": "BACA", "no_rekening": "9028391312731221", "bukti": "Screenshot_from_2019-04-13_21-26-25.png"}}, {"model": "iklan.pembayaran", "pk": 2, "fields": {"status": "Belum Terkonfirmasi", "total": 1000000, "pemasang_iklan": 1, "bank_pengirim": "BACA", "no_rekening": "9028391312731221", "bukti": "Screenshot_from_2019-04-13_16-50-51.png"}}]
Setelah mendapatkan file iklan.json, apabila suatu ketika database kita ter-flush kita dapat melakukan data seeding dengan menggunakan command
python manage.py loaddata iklan.json
Automisasi Data Seeding
Kita dapat melakukan automisasi data seeding dengan menambahkan perintah berikut pada file CI
# pada gitlab-ci.yml
before_script:
- pip install virtualenv
- virtualenv env
- source env/bin/activate
- pip install -r requirements.txt
- python manage.py makemigrations
- python manage.py migrate
- python manage.py loaddata user_profile.json
- python manage.py collectstatic --no-input
Tambahan perintah pada file docker-compose.yml
command: bash -c "python3 manage.py makemigrations && python3 manage.py migrate && python manage.py loaddata iklan.json &&python3 manage.py collectstatic --no-input && python3 manage.py runserver 0.0.0.0:8000"