2025-12-17 10:43:03 +07:00
|
|
|
# Database Migrations
|
|
|
|
|
|
|
|
|
|
## Cara Apply Migration
|
|
|
|
|
|
|
|
|
|
### 1. Backup Database (PENTING!)
|
|
|
|
|
Sebelum menjalankan migration, pastikan untuk backup database terlebih dahulu:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
mysqldump -u sql_retribusi -p sql_retribusi > backup_$(date +%Y%m%d_%H%M%S).sql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. Apply Migration
|
|
|
|
|
|
|
|
|
|
#### Menggunakan MySQL Command Line:
|
|
|
|
|
```bash
|
|
|
|
|
mysql -u sql_retribusi -p sql_retribusi < migrations/001_create_audit_logs.sql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Menggunakan phpMyAdmin:
|
|
|
|
|
1. Login ke phpMyAdmin
|
|
|
|
|
2. Pilih database `sql_retribusi`
|
|
|
|
|
3. Klik tab "SQL"
|
|
|
|
|
4. Copy-paste isi file `001_create_audit_logs.sql`
|
|
|
|
|
5. Klik "Go" untuk execute
|
|
|
|
|
|
|
|
|
|
#### Menggunakan MySQL Workbench:
|
|
|
|
|
1. Buka MySQL Workbench
|
|
|
|
|
2. Connect ke database server
|
|
|
|
|
3. Pilih database `sql_retribusi`
|
|
|
|
|
4. File → Run SQL Script
|
|
|
|
|
5. Pilih file `001_create_audit_logs.sql`
|
|
|
|
|
6. Klik "Run"
|
|
|
|
|
|
|
|
|
|
### 3. Verifikasi
|
|
|
|
|
|
|
|
|
|
Setelah migration berhasil, verifikasi tabel sudah dibuat:
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SHOW TABLES LIKE 'audit_logs';
|
|
|
|
|
DESCRIBE audit_logs;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Daftar Migration
|
|
|
|
|
|
|
|
|
|
### 001_create_audit_logs.sql
|
|
|
|
|
- **Tanggal**: 2024-12-28
|
|
|
|
|
- **Deskripsi**: Membuat tabel `audit_logs` untuk tracking semua perubahan data (create/update/delete)
|
|
|
|
|
- **Tabel**: `audit_logs`
|
|
|
|
|
- **Rollback**: Tidak ada (tabel ini critical untuk audit, tidak boleh dihapus)
|
|
|
|
|
|
2025-12-18 06:36:49 +07:00
|
|
|
### 002_create_hourly_summary.sql
|
|
|
|
|
- **Tanggal**: 2024-12-28
|
|
|
|
|
- **Deskripsi**: Membuat tabel `hourly_summary` untuk rekap per jam
|
|
|
|
|
- **Tabel**: `hourly_summary`
|
|
|
|
|
|
|
|
|
|
### 003_create_realtime_events.sql
|
|
|
|
|
- **Tanggal**: 2024-12-28
|
|
|
|
|
- **Deskripsi**: Membuat tabel `realtime_events` untuk ring buffer SSE events
|
|
|
|
|
- **Tabel**: `realtime_events`
|
|
|
|
|
|
|
|
|
|
### 004_add_camera_to_gates.sql
|
|
|
|
|
- **Tanggal**: 2025-01-17
|
|
|
|
|
- **Deskripsi**: Menambahkan field `camera` ke tabel `gates` untuk menyimpan URL atau identifier kamera
|
|
|
|
|
- **Tabel**: `gates`
|
|
|
|
|
- **Rollback**:
|
|
|
|
|
```sql
|
|
|
|
|
ALTER TABLE gates DROP COLUMN camera;
|
|
|
|
|
```
|
|
|
|
|
|
2025-12-17 10:43:03 +07:00
|
|
|
## Catatan Penting
|
|
|
|
|
|
|
|
|
|
- **JANGAN** hapus atau modify migration file yang sudah di-apply
|
|
|
|
|
- Selalu backup database sebelum apply migration
|
|
|
|
|
- Test migration di environment development terlebih dahulu
|
|
|
|
|
- Jika terjadi error, restore dari backup dan perbaiki migration file
|
|
|
|
|
|