Database Overview
π§© Repository Structure
Section titled βπ§© Repository StructureβProject Structure β Database Migration
π¦ Git Repository:
https://gitlab.komerce.id/devops/database-migration
π Project Structure
Section titled βπ Project StructureβStruktur repository ini digunakan untuk mengelola file-file migrasi database dari berbagai jenis database seperti MariaDB, MySQL, PostgreSQL, dan MongoDB.
Setiap folder database berisi subfolder per aplikasi atau modul (misalnya affiliate, komcards, dll).
βββ mariadb/ β βββ affiliate β βββ komcards/ β β βββ changelogs β β β βββ 20230801000000_init.sql β β βββ .gitkeep βββ mongodb/ βββ mysql/ βββ postgresql/ βββ create-migration-file.sh βββ readme.mdποΈ Folder Explanation
Section titled βποΈ Folder Explanationβ| Folder / File | Deskripsi |
|---|---|
mariadb/ | Menyimpan file migrasi untuk database MariaDB. Setiap subfolder mewakili project/module. |
mongodb/ | Menyimpan script migrasi atau seeding data untuk MongoDB (jika digunakan). |
mysql/ | Menyimpan migrasi untuk MySQL Database. Struktur mirip dengan folder mariadb/. |
postgresql/ | Menyimpan file migrasi untuk PostgreSQL. |
create-migration-file.sh | Script shell otomatis untuk membuat file migrasi baru dengan format timestamp. |
readme.md | Dokumentasi utama repository. |
π§± Example Migration Structure
Section titled βπ§± Example Migration StructureβContoh struktur folder migrasi di dalam salah satu project (misalnya komcards):
mariadb/βββ komcards/βββ changelogs/β βββ 20230801000000_init.sqlβ βββ 20230915090000_add_users_table.sqlβ βββ 20231020094500_alter_transactions_table.sqlβββ .gitkeepSetiap file migrasi mengikuti format:
Contoh:
20230801000000_init.sql20230915090000_add_users_table.sql
πΏ Branching Strategy
Section titled βπΏ Branching StrategyβRepository ini menggunakan strategi Git Branching Standard untuk menjaga kestabilan dan workflow development.
| Branch | Tujuan | Keterangan |
|---|---|---|
master | Production-ready | Kode yang siap dan sudah digunakan di produksi. |
staging | Staging environment | Untuk testing sebelum masuk ke production. |
development | Development environment | Tempat pengembangan aktif dan integrasi feature baru. |
feature/* | Feature development | Digunakan untuk membuat fitur baru. Contoh: feature/migration-add-user-table |
bugfix/* | Bug fixes | Untuk memperbaiki bug yang ditemukan di development atau staging. |
hotfix/* | Urgent production fix | Perbaikan kritis langsung pada production (master). |
π οΈ Migration Workflow
Section titled βπ οΈ Migration Workflowβ1. Membuat Migration Baru
Section titled β1. Membuat Migration BaruβSebelum membuat file migration baru:
-
Pull branch
masterterbaruTerminal window git checkout mastergit pull origin master -
Buat branch baru dari master Gunakan format:
Terminal window feature/migration-<nama-migration>Contoh
Terminal window git checkout -b feature/migration-add-user-table -
Jalankan Skrip:
Terminal window bash create-migration-file.sh -
Ikuti Petunjuk: Skrip akan meminta Anda untuk memilih:
- Direktori Jenis Database: Pilih jenis database (misalnya,
mariadb,mysql,postgresql). - Direktori Nama Database: Pilih skema atau nama pengguna database yang relevan (misalnya
komship). - Komentar Migrasi: Masukkan deskripsi singkat tentang migrasi (contoh:
create table users). - Query SQL Lengkap: Masukkan pernyataan SQL untuk migrasi Anda (misalnya,
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255));). TekanCtrl+Ddi baris baru setelah selesai. - Query SQL Rollback Lengkap: Masukkan pernyataan SQL untuk mengembalikan migrasi (misalnya,
DROP TABLE users). TekanCtrl+Ddi baris baru setelah selesai.
- Direktori Jenis Database: Pilih jenis database (misalnya,
-
Hasil: Skrip akan secara otomatis membuat file
.sqlbaru di dalam direktori[database_type]/[nama_db]/changelogs/dengan nama yang diformat berdasarkan timestamp dan komentar Anda (contoh:202507040930_create_table_mahasiswa5.sql). Contoh:--liquibase formatted sql--changeset febriyan:202506040854--comment: create table userscreate table users (id int primary key auto_increment not null,name varchar(50) not null,address varchar(50),city varchar(30))--rollback DROP TABLE users;Pastikan query rollbacknya hanya terdiri dari satu baris
2. Merge Request Flow
Section titled β2. Merge Request FlowβSetelah migration siap:
Push branch ke remote:
git push origin feature/migration-add-user-tableBuat Merge Request (MR) ke branch sesuai kebutuhan:
-
Jika untuk pengujian β merge ke development
-
Jika untuk staging β merge ke staging
-
Jika untuk produksi β merge ke master
β οΈ Catatan Penting: Jangan pernah membuat merge request dari development atau staging ke branch kamu sendiri. Semua feature baru harus berasal dari master.
π Last Updated: 2025-10-30 π§βπ» Maintained by: Backend Team β Komerce