PPL
Documentation
Directories
-
cmd
folder hanya untuk menjalani server -
database
folder untuk membuat instance gorm -
handler
folder untuk mount endpoint yang sudah dibuat dan meyambungkan middleware ke endpoint -
middleware
folder untuk mengurus middleware -
models
folder untuk semua tabel yang sudah dibuat -
module
folder untuk semua kode yang akan meng-handle request (transport, business logic, repository) -
utils
folder untuk kode-kode pembantu
Workflow
- Untuk membuat entitas baru, buat folder entitas-nya di dalam folder
module
, contohmodule/system-logs
- Lalu buat 4 folder di dalamnya yaitu
config
,entity
,internal
, dantransport
(config
gunanya untuk membuat struct transport config untuk sebuah entitas yang nanti akan dipakai di handler,entity
untuk membuat struct entitas yang akan dipakai untuk CRUD, parameter fungsi, dan response data,internal
untuk implementasi kode yang akan menghandle response,transport
untuk implementasi kode yang akan menghandle request) - Di dalam folder
internal
buat lagi 2 folder bernamarepository
danusecase
,repository
hanya untuk query ke database, untuk semua business logic handle diusecase
(seperti controller) - Untuk folder
transport
bisa ada dua file, yaituinternal_handler
atauadmin_handler
(bisa nama lain), bedanyainternal_handler
gunanya untuk membuat endpoint yang akan dipakai antara server saja (pakai basic auth), kalauadmin_handler
untuk membuat endpoint yang akan dipakai oleh klien (pakai token) - Jika sudah membuat endpoint baru, pindah ke
handler.go
di folderhandler
, dan pindah keserver.go
untuk nge-mount endpoint baru. Ikuti kode yang sudah ada
Git branching
Repository akan memiliki 2 branch utama, yaitu master dan production.
Setiap pembuatan branch baru, buat branch baru dengan base master.
Format: <tipe>/<judul>
List tipe:
- Story, untuk fitur atau use case baru
- Task, untuk bug fixing, performance improvement, refactor, dsb.
Judul: gunakan kebab case
Contoh:
- story/api-attendance
- story/page-attendance
- task/improve-sql-performance-on-xxxx-method
Setelah selesai, Pull Request ke master dan wajib minta peer review ke kadiv/wakadiv.
Semantic Commit Message
-
feat
: (new feature for the user, not a new feature for build script) -
fix
: (bug fix for the user, not a fix to a build script) -
docs
: (changes to the documentation) -
style
: (formatting, missing semi colons, etc; no production code change) -
refactor
: (refactoring production code, eg. renaming a variable) -
test
: (adding missing tests, refactoring tests; no production code change) -
chore
: (updating grunt tasks etc; no production code change)
Local Development Setup
Git
Authorize ke github menggunakan SSH/ HTTPs. Referensi untuk SSH:
Requirements
- Go versi 1.20
- Postgresql
Instalasi Requirements
- Install Go versi 1.20. Referensi: https://go.dev/doc/install
- Install Postgresql
Langkah-Langkah
- Clone repo
git clone git@gitlab.informatika.org:k-01-11/graduit-be.git
ataugit clone https://gitlab.informatika.org/k-01-11/graduit-be.git
- Buat .env (bisa kontak orang-orang yang bersangkutan dengan projek ini untuk detil .env)
- Jalankan menggunakan debugger vscode (bernama GRADUIT REST) atau menggunakan docker
docker compose up
- Jika berhasil, server akan berjalan pada port 8080
API Documentation
Apabila server sudah berhasil dinyalakan, dokumentasi API bisa diakses pada url: http://localhost:8080/swagger/index.html# atau https://s1api.domainbuattesting.my.id/swagger//index.html(perhatikan bahwa untuk saat ini dokumentasi yang ada belum lengkap)