Skip to content
Snippets Groups Projects
user avatar
e7055960

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, contoh module/system-logs
  • Lalu buat 4 folder di dalamnya yaitu config, entity, internal, dan transport (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 bernama repository dan usecase, repository hanya untuk query ke database, untuk semua business logic handle di usecase (seperti controller)
  • Untuk folder transport bisa ada dua file, yaitu internal_handler atau admin_handler (bisa nama lain), bedanya internal_handler gunanya untuk membuat endpoint yang akan dipakai antara server saja (pakai basic auth), kalau admin_handler untuk membuat endpoint yang akan dipakai oleh klien (pakai token)
  • Jika sudah membuat endpoint baru, pindah ke handler.go di folder handler, dan pindah ke server.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:

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

Requirements

  1. Go versi 1.20
  2. Postgresql

Instalasi Requirements

  1. Install Go versi 1.20. Referensi: https://go.dev/doc/install
  2. Install Postgresql

Langkah-Langkah

  1. Clone repo git clone git@gitlab.informatika.org:k-01-11/graduit-be.git atau git clone https://gitlab.informatika.org/k-01-11/graduit-be.git
  2. Buat .env (bisa kontak orang-orang yang bersangkutan dengan projek ini untuk detil .env)
  3. Jalankan menggunakan debugger vscode (bernama GRADUIT REST) atau menggunakan docker docker compose up
  4. 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# (perhatikan bahwa untuk saat ini dokumentasi yang ada belum lengkap)